栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

从Node.js中的异步函数返回值

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

从Node.js中的异步函数返回值

获得未定义值的原因是因为find函数是异步的,并且可以随时完成。在您的情况下,使用后就结束了

console.log()
,因此在访问它们时值是不确定的。

若要解决此问题,您只能使用find函数的回调中的值。它看起来像这样:

var Person = mongoose.model('Person', PersonSchema);var Product = mongoose.model('Product', ProductSchema);var myObject = new Object();function getData(docs, callback) {  function loop(i) {    Product.find({ user: docs[i]._id}, function (err, pers) {      myObject[i] = pers;      if (i < docs.length) {        loop(i + 1);      } else {        callback();      }    });  };  loop(0);};Person.find().exec(function(err, docs) {  getData(docs, function() {    // myObject has been populated at this point  });});

数据处理已移至等待上一迭代完成的循环。这样,我们可以确定何时触发了最后一个回调,以便在包装函数中触发该回调。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/484864.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号