我是一個較新的Node.js.I定義了一個數組作爲局部變量,並且想在下面的和中使用它,我在其中保存了一些有用的數據。但最後,陣列是空的。有人告訴我爲什麼?感謝您的支持。關於Node.js中的局部變量promise
const Device = require("./mongo.js").Device;
const Video = require("./mongo.js").Video;
Device.findOne({id:"11112222"}).exec()
.then(function(data){
var videoIds = data.videoIds.split(",");
var videoId2URL = [];
console.log(videoIds);
videoIds.forEach(function(one){
return Video.findOne({id:one}).exec()
.then(function(data){
videoId2URL.push({id:one,url:data.url});
return videoId2URL;
})
});
console.log(videoId2URL);
});
這裏的主要問題是,你syncronous和asyncronous呼叫混合一起沒有適當處理後。特別是當你使用'Promise'時,你正在使用異步代碼,因此你需要改變代碼流。基本上你在'forEach'迭代器中觸發了多個Promise,但是在解析之前打印('console.log')。 – MarcoL