异步forEach函数返回undefined

时间:2017-10-06 13:54:37

标签: javascript asynchronous foreach

我尝试构建异步forEach函数,但不幸的是它返回值undefined而不是我希望的数组内容。我做错了什么?

function asyncforEach(array, cb) {
    array.forEach(function(){
        setTimeout(cb, 0);
    });
}

asyncforEach([1,2,3,4], function(i) {
    console.log(i)
});

2 个答案:

答案 0 :(得分:4)

将变量(<itemtypes> <itemtype code="Foo" abstract="true"> <attributes> <!-- attributes --> </attributes> </itemtype> </itemtypes> )传递给setTimeout中的回调。

value

function asyncforEach(array, cb) { array.forEach(function(value){ // value: The current array entry setTimeout(cb, 0, value); // Pass it to the callback when setTimeout invokes it. }); } asyncforEach([1,2,3,4], function(i) { console.log(i) });setTimeout参数之后传递给function的所有参数都会传递给回调:

delay

答案 1 :(得分:2)

您错过了item函数参数中的forEach并将该项传递到setTimeout,同时调用cb函数并将传递的数组项放入其中。当时间结束时,这将强制在箭头函数内调用cb函数。

function asyncforEach(array, cb) {
    array.forEach(function(i) {
        //-----------------^---
        setTimeout( () => cb(i), 0);
        //----------^^^^^^^^^^^----
    });
}

asyncforEach([1,2,3,4], function(i) {
    console.log(i)
});