首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多异步请求

多异步请求
EN

Stack Overflow用户
提问于 2014-11-19 18:39:46
回答 1查看 89关注 0票数 2

好的,这里我是triyng在对象列表中进行一些验证,但是函数验证调用三个异步方法(向数据库发出请求).But,然后在paralel中,应用程序会给出错误500。

代码语言:javascript
复制
_.each(titlesToSave, function(title, index) {
    titleValidator.validateAsync(title, function (err) {
        if (err) {
            invalidTitles.push({index: index, error: err});
        }
        joinArray[index](); 
     }); 
});

var validateAsync = function (title, next) {
    async.parallel([
        function(callback){ checkCity(title.carrier.address, callback)},
        function(callback){ checkCity(title.beneficiary.address, callback)},
        function(callback){ checkCity(title.seller.address, callback)}
    ],
        function (err,results) {
            if(err){
                console.log('ERROR: ' +err);
                next(err);
            }else{
                console.log('Result: '+results);
                next();
            }
        });
};

var checkCity = function(adress, callback){
    var url = 'http://localhost:9000/api/city/'+adress.state+'/'+adress.city;
    if (adress) {
        http.get(url, function (res) {
            console.log('STATUS: ' + res.statusCode);
            res.on('data', function (chunk) {
                if (res.statusCode === 200) {
                    console.log(''+chunk);
                    callback(null, chunk);
                } else {
                    console.log('Invalid city: '+adress.city+', StatusCode: ' + res.statusCode);
                    callback(new Error('Invalid adress.'));
                }
            });
        }).on('error', function (error) {
            callback(error);
        });
    }
};
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-19 19:48:06

尝尝这个,

代码语言:javascript
复制
async.eachSeries(titlesToSave, function (title, index, next) {
  titleValidator.validateAsync(title, function (err) {
    if (err) {
      invalidTitles.push({index: index, error: err});
    }

    joinArray[index]();

    next(null);
  }); 
}, function (err) {
  console.log(err);
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27024450

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档