gpt4 book ai didi

javascript - 使用q库在nodejs中进行for循环

转载 作者:搜寻专家 更新时间:2023-10-31 23:47:28 24 4
gpt4 key购买 nike

以下是我有的功能

function start(){
var deferred = Q.defer();
for(var i=0; i < 3; i++){
second()
.then(third)
.then(fourth)
.catch(function(error){
console.log(error);
});
}
return deferred.promise;
}

function second(){
//does an http request
// returns promise
}

function third(){
//does an http request
// returns promise
}

function fourth(){
//takes the response of second and third function
//and compares the response
//returns promise
}

这是文件运行时的操作顺序:

second function
second function
third function
third function
fourth function
fourth function

(我知道为什么会这样,这是由于第二个和第三个函数中的 I/O 请求)

我想要的操作顺序

second function
third function
fourth function
second function
third function
fourth function

我如何在 nodejs 中完成此操作?

下面是对上述问题的跟进:如何将值传递给 .then(funcCall(value)) 中的函数,以便当函数实际上被调用它也得到一个它可以工作的值。

最佳答案

你已经完成了一半,你只需要正确链接:

function start() {
var deferred = Promise.resolve();
for (var i = 0; i < 3; i++) {
deferred = deferred.then(second)
.then(third)
.then(fourth)
.catch(function(error) {
console.log(error);
});
}
return deferred.promise;
}

function second() {
return new Promise(function(r) {
console.log('second');
setTimeout(r, 100);
});
}

function third() {
return new Promise(function(r) {
console.log('third');
setTimeout(r, 100);
});
}

function fourth() {
return new Promise(function(r) {
console.log('fourth')
setTimeout(r, 100);
});
}
start();

Promise替换为Q

关于javascript - 使用q库在nodejs中进行for循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33439537/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com