我是一个较新的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