gpt4 book ai didi

javascript - 在 Node 中使用 promise 循环返回相同的响应

转载 作者:行者123 更新时间:2023-11-30 17:26:20 25 4
gpt4 key购买 nike

当使用 q 时,我得到与循环次数相同的响应:

function start() {
var the_promises = [];
var api_info = config.AFV
var deferred = Q.defer();
var extPath = '/search/'
var callType = 'GET'
var mymd = buildmd5(api_info, extPath, callType);

for(var page=1;page<4;page++) {

console.log('getting page:'+page)
new Client().get(url'+page, function(data, response){
deferred.resolve(data);
});
the_promises.push(deferred.promise);
}
return Q.all(the_promises);
}

start().then(function (clips) {
inspect(clips)
});

输出: 结果页数:[ '1' ], 结果页数:[ '1' ], 结果页数:[ '1' ], 结果页数:[ '1' ],

我觉得我可能有 var deferred = Q.defer();在错误的地方,它不会保存不同的 promise 。我知道这个版本的代码不起作用,但我只关心 promise 。谢谢!

最佳答案

您需要为每个新客户创建一个新的 deferred。并将该循环体放入一个立即调用的函数中,以正确确定 var 的范围。

function start() {
var the_promises = [];
var api_info = config.AFV;
var extPath = '/search/';
var callType = 'GET';
var mymd = buildmd5(api_info, extPath, callType);

for(var page=1;page<4;page++) {
(function() {
var deferred = Q.defer();
console.log('getting page:'+page);
new Client().get('url'+page, function(data, response){
deferred.resolve(data);
});
the_promises.push(deferred.promise);
}());
}
return Q.all(the_promises);
}

start().then(function (clips) {
inspect(clips);
});

关于javascript - 在 Node 中使用 promise 循环返回相同的响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24172245/

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