gpt4 book ai didi

javascript - Node.js 中使用异步 waterfall 进行函数迭代

转载 作者:太空宇宙 更新时间:2023-11-04 03:30:29 24 4
gpt4 key购买 nike

我试图从某个url获取资源,该资源被分成多个页面,页面数量超过500,但必须保证资源的顺序,所以我决定使用Async模块。

function getData(page, callback){
var url = "http://someurl.com/document?page="+page;
// get data from the url ...
// when success,
callback();
};

所以,上面的函数是从某个 url 获取资源,我必须多次迭代这个函数,但我不知道如何使用异步 waterfall 迭代它。我应该在什么时候插入 for 迭代?

async.waterfall([

// page 1
function(callback){
getData(1, function(){
callback(null);
});
},

// page 2
function(callback){
getData(2, function(){
callback(null);
});
},

// page 3, 4, 5..... 100, ... 500


],function(err, result){
if(err) return next();

console.log('finish !');
});

最佳答案

为什么不使用 Promise:

function getData(page, callback){
var url = "http://someurl.com/document?page="+page;
// var request = call to get data from the url ...
return request;
};

var promises = [];

for (var page = 1; page < totalPages; page++) {
promises.push(getData(page));
}

Promise.all(promises).then(function (listOfResults) {
// Do callback here
});

只需确保您发送 get 请求的方法返回一个 promise 。如果没有,你可以使用这样的函数:

function usesCallback(data, callback) {
// Do something with data
callback();
}

function makePromise(data) {
return new Promise(function (resolve, reject) {
usesCallback(data, resolve);
});
}

Here有关 Promise 的更多信息

关于javascript - Node.js 中使用异步 waterfall 进行函数迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38715753/

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