gpt4 book ai didi

javascript - 在循环内使用 Q.allSettled 作为 promise 链

转载 作者:行者123 更新时间:2023-12-02 15:33:23 25 4
gpt4 key购买 nike

我正在使用很棒的 Q 库来实现 promise ,并在 Chrome 应用程序中支持 IndexedDB。问题是在 Promise 链中的所有方法完成之前就调用了 Q.allSettled。

我有两个表:

  1. search_queries 表,其中包含搜索查询列表和
  2. 包含推文列表的推文表。

所有 search_queries 的自动搜索运行方式如下:

var promises = [];

var sq_count = 0;

search_queries.foreach(function (val, index, array) {

// 1. Search Twitter Asynchronously

// 2. Then Add them to a tweets table

// 3. Then update a search queries table


promises.push(
// Call Twitter API
search_twitter(Q, val)
.then(function(tweets) {
// Add Tweets to tweets table
return (add_tweets(Q, tweets, val));
})
// Update number of tweets in search_queries table
.then(function(search_query){
// Update counts for search_search query and store it
return update_search_query_after_search(search_query);
})
.then(function(v){
console.log("Chain is completed");
)); // Close promise chain


sq_count ++;

if(sq_count == search_query_list.length) {
Q.allSettled(promises)
.then(function(result) {
console.log("All Promises Settled);
});
}); // Close foreach loop

运行 update_search_query_after_search 方法后,tweets 表中的推文数量与 search_query 表中的推文数量不匹配。

最佳答案

您的代码可以简化为

var promises = search_queries.map(function(val, index, array) {
return search_twitter(Q, val).then(function(tweets) {
return add_tweets(Q, tweets, val);
}).then(function(search_query) {
return update_search_query_after_search(search_query);
}).then(function(v) {
console.log("Chain is completed");
});
});
Q.allSettled(promises).then(function(result) {
console.log("All Promises Settled");
});

看看这是否适合你

关于javascript - 在循环内使用 Q.allSettled 作为 promise 链,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33148697/

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