如何使节点 js 同步
How can I make node js synchronize?
我按照建议使用了承诺,但我仍然有一个问题,我可以安慰.log我的数组。
这是我所做的:
exports.getData = function(request, response) {
userEmail = request.body.user;
function delay(ms){ // takes amount of milliseconds
return new Promise(function(resolve, reject){
setTimeout(function(){ // when the time is up
resolve(); // change the promise to the fulfilled state
}, ms);
});
}
Wish.find({userEmail}).exec( function(err, docs) {
//console.log("docs "+docs);
var wishArray = new Array();
for (var i=0; i<docs.length; i++) {
if (docs[i].sub=='party') {
var id = docs[i].num;
delay(100).then(function(){
Party.find({id}).exec(function(err, details) {
console.log("5");
wishArray.push(details);
});
});
}
}
});
delay(700).then(function(){
console.log(wishArray);
});
}
我试图使第二个延迟的数字更大,但它不起作用。有人知道我该如何解决它吗?
通过这种方式,您可以避免在wishArray完全填充之前登录。
exports.getData = function(request, response) {
userEmail = request.body.user;
Wish.find({userEmail}).exec( function(err, docs) {
console.log("docs "+docs);
var wishArray = new Array();
for (var i=0; i<docs.length; i++) {
if (docs[i].sub=='party') {
console.log("--------------------");
var id = docs[i].num;
Party.find({id}).exec(function(err, details) {
wishArray.push(details);
if(wishArray.length == docs.length){
console.log(wishArray);
}
});
}
}
console.log("***************************");
});
}
在许多其他复杂的用例中,人们使用延迟查询数组。 但是您的情况很简单,您只需通过数组的长度即可掌握它。
相关文章:
- 与运行长作业(javascript,node.js)的第三方API同步的最佳实践
- 如何将Knockout.JS与服务器已经在DOM中呈现的数据同步
- javascript函数中的异步与同步.(Node.js)
- Node.js和同步API函数
- strongloop script.js run find in before delete方法:如何同步运行异步方法
- 如何制作'http请求'在Node js中同步
- 如何使用selenium和同步JS进行屏幕截图
- node.js,async,restify:无法使restify调用在async.series内同步
- 在 Backbone.js 中创建自定义“同步”方法
- 在表单同步提交后执行 js 吗?
- jQuery/JS:从服务器同步读取文本文件
- 节点.js / 续集.js / 快递.js - 如何插入多对多关联?(同步/异步?
- javascript如何成为一种同步语言并在浏览器和node.js环境中异步运行
- 如何使用node.js和promise编写同步while循环
- node.js和hapi:同步从数据库中获取数据
- Node.js同步调用passport本地注册
- 无法弄清楚如何在节点.js中使用同步.js
- 相当于同步JS中的XMLHttpRequest超时
- 从同步JS函数返回承诺
- 任何可用于自动同步.js文件的工具