我使用以下代码
request(firstparams, function () {
var secondparams = {
// ******
};
request(secondparams, function () {
for (i=0; i<3; i++) {
var thirdparams = {
// ******
};
request(thirdparams, function () {
console.log('foo');
});
}
console.log('bar');
});
});
并希望得到如下结果:
foo
foo
foo
bar
但结果是:
bar
foo
foo
foo
抱歉我的英语不好,如果有些含糊不清,我会尽力解释。非常感谢^ ^
答案 0 :(得分:0)
执行所需操作的简单方法是使用'async' module这是处理异步问题的经典模块。
并行运行第3个电话并记录&#39; bar&#39;在每个完成后你会做这样的事情:
const async = require('async');
let asyncFunctions = [];
for (let i = 0; i < 3; i+= 1) {
let thirdParams = {...};
asyncFunctions.push(function (callback) {
request(thirdparams, function (err, data) {
console.log('foo');
callback(err, data);
});
});
}
async.parallel(asyncFunctions, function (err, data) {
console.log('bar');
});
&#13;
您正在使用回调。但是还有其他方法可以处理node.js中的异步,例如:承诺,生成器和ES7中的async / await函数。
我认为这可能会对您查看this one等文章有用。