在 NodeJS 代码中同步执行

Synchronize the execution in NodeJS code

我正在尝试执行以下操作:

var mongojs = require("mongojs");
var db = mongojs("myplaylist", ["songs"])

data = [{}, {}, {}, .... ]     /*Array of objects*/

for(var i = 0; i < data.length; i++){
     console.log(data);
     db.songs.save(data[i], function(err, data[i]){
          if(error) throw error;
          console.log(data[i]);
     });
}

`

在上面的代码片段中,迭代通过显示数据数组中的所有项目而不在数据库中保存一条记录来完成。

请帮我解决这个问题。

由于 save 是一个异步函数,您需要使用 callbackspromiseasync/await。这是一个如何使用 promise 处理此问题的示例:

var mongojs = require("mongojs");
var db = mongojs("myplaylist", ["songs"])

data = [{}, {}, {}, .... ]     /*Array of objects*/

var data_arr = [];
data.forEach(element => {
    data_arr.push(db.songs.save(element));
});

Promise.all(data_arr).then(response =>{
    console.log(response) //contains response array of each save call
}).catch(err => {
    console.log(err);
});