此代碼可能無法正常作業,因為與 mongo 的連接建立得不夠快。所以我認為我必須將其更改為 asnyc 函式。但絕對不知道從哪里開始。我是 Node 和 Mongo 的新手
| 剩下 |
|---|
| 朱利安·格拉伯 900 1 |
| windowsdemo 673 3 |
| 筆記本電腦演示 640 4 |
| Ipad演示 628 5 |
它應該看起來像這樣,但 mongo 更新它每個等級都是相同的數字。
// function for giving rank
function giveRank(arrayArg,resultArg){
// declaring and initilising variables
let rank = 1;
prev_rank = rank;
position = 0;
// displaying the headers in the console
console.log('\n-------OUR RESULTS------\n');
console.log('Name | Mark | Position\n');
// looping through the rank array
for (i = 0; i < arrayArg.length ; i ) {
/*
If it is the first index, then automatically the position becomes 1.
*/
if(i == 0) {
position = rank;
Ranking.find({name: arrayArg[i]}).then((data) => {
if(data){
updateRank(bla, bla, bla)
}else{
newRank(bla,bla,bla);
}
});
/*
if the value contained in `[i]` is not equal to `[i-1]`, increment the `rank` value and assign it to `position`.
The `prev_rank` is assigned the `rank` value.
*/
} else if(arrayArg[i] != arrayArg[i-1]) {
rank ;
position = rank;
prev_rank = rank;
Ranking.find({name: arrayArg[i]}).then((data) => {
if(data){
updateRank(bla, bla, bla)
}else{
newRank(bla,bla,bla);
}
});
/*
Otherwise, if the value contained in `[i]` is equal to `[i-1]`,
assign the position the value stored in the `prev_rank` variable then increment the value stored in the `rank` variable.*/
} else {
position = prev_rank;
rank ;
Ranking.find({name: arrayArg[i]}).then((data) => {
if(data){
updateRank(bla, bla, bla)
}else{
newRank(bla,bla,bla);
}
});
}
}
}
uj5u.com熱心網友回復:
要將基于 promise-chain 的異步呼叫轉換為 async/await 呼叫,您只需要做幾件事:
async使用關鍵字將父函式轉換為異步函式,如下所示:function myFunction (...) {}變成async function myFunction (...) {}在函式呼叫前使用 await 關鍵字,如下所示:
doStuff(...)變成await doStuff(...)將引數轉換為您的第一個
.then()回呼到異步呼叫的回傳值,如下所示:doStuff().then((data) => {})變成let data = await doStuff()將
.then()回呼的主體移動到回應的分配下方,如下所示:doStuff().then((data) => { console.log(data) })變成let data = await doStuff(); console.log(data);
因此,在您的示例中,轉換其中一個函式如下所示:
async function giveRank(arrayArg,resultArg){
...
...
if(i == 0) {
position = rank;
let data = await Ranking.find({name: arrayArg[i]})
if(data){
updateRank(bla, bla, bla)
}else{
newRank(bla,bla,bla);
}
}
...
...
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/430588.html
標籤:javascript mongodb 异步
上一篇:任務內的異步任務
下一篇:異步函式中的Dart回傳關鍵字
