【问题标题】:does async.map guarantee results are passed in order?async.map 是否保证结果按顺序传递?
【发布时间】:2016-11-16 13:49:05
【问题描述】:

如果我对async.map 进行了一系列调用,是否保证结果正常?或者结果只是请求完成的顺序?例如

var requestList = [
    { method: 'GET', url: '/something1' },
    { method: 'GET', url: '/something2' },
    { method: 'GET', url: '/something3' }];

// async map the requests together, and handle the result in
// the callback.
async.map(requestList, function(obj, callback) {
    request(obj, function(error, response, body) {
        if(!error && response.statusCode == 200) {
            var body = JSON.parse(body);
            callback(null, body);
        } else {
            callback(error || response.statusCode);
        }
    });
}, function(err, result) {
    if(err) {
        console.log('Error!');
    } else {
        // is result guarenteed to be in the order: [/something1, /something2, /something3] ?
    }
});

【问题讨论】:

  • 是的,迭代器和数组需要顺序。尝试维护对象键的顺序

标签: javascript asynchronous async.js


【解决方案1】:

如果它传递了一个数组,我认为它总是有序的。 根据官方文档 '如果 map 传递一个对象,结果将是一个数组。结果将大致按照原始对象键的顺序(但这可能因 JavaScript 引擎而异)。 文档没有谈论数组,因此可以安全地假设订单将被保留。

【讨论】:

    猜你喜欢
    • 2015-11-02
    • 2013-01-19
    • 2016-11-18
    • 1970-01-01
    • 2014-08-05
    • 1970-01-01
    • 1970-01-01
    • 2010-12-14
    • 2011-06-07
    相关资源
    最近更新 更多