求大神帮忙 forEach里循环发请求 如何控制最终回调
发布于 11 年前 作者 zaczhou 8416 次浏览 最后一次编辑是 8 年前

我有这样一个需求,利用request 向一个服务器发请求获取数据,例如我有一个url_list, 这里面放的是各种抓数据的url,然后做其他的逻辑 ,我利用了async; 我想到的方法是:

async.waterfall([ function(callback){ url_list.forEach(function(url){ request(url,(e, r, json) { 想要的数据 ===json里面的数据 callback(全部数据) }); }); }, 其他的逻辑(例如渲染页面)

但是这样我怎么控制回调呢,也是等待所有的请求返回后,采取执行callback,有什么方式 或者库都请,求大神帮忙, 我是node新手

3 回复

习惯一下回调吧, 就算不喜欢用, 文档也会有回调写的.

then.js的写法如下:

// url_list 为数组
then.each(url_list, function (defer, url) {
    request(url, function (err, res, json) {
        defer(err, json)
    })
}).then(function (defer, result) {
    // result 就是url获取的json结果数组,顺序与url对应
}).fail(function (defer, err) {
    // 处理 err
})

https://github.com/teambition/then.js 目前teambition.com前端和angularjs.cn的后端采用的then.js

在外面多嵌套一个

var work = async.waterfall([
function(callback){
url_list.forEach(function(url){
   request(url,(e, r, json) {
   想要的数据 ===json里面的数据
   callback(全部数据)
  });
});

async.forEach(list, work, function(){
   //fin work
})
回到顶部