async.map保证结果按顺序传递?

时间:2016-11-16 05:34:18

标签: javascript asynchronous async.js

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

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] ?
    }
});

1 个答案:

答案 0 :(得分:0)

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