我想构建一个异步forEach
函数,但不幸的是它返回值undefined
而不是我所希望的数组的内容。我究竟做错了什么?异步为每个函数返回undefined
function asyncforEach(array, cb) {
array.forEach(function(){
setTimeout(cb, 0);
});
}
asyncforEach([1,2,3,4], function(i) {
console.log(i)
});
我想构建一个异步forEach
函数,但不幸的是它返回值undefined
而不是我所希望的数组的内容。我究竟做错了什么?异步为每个函数返回undefined
function asyncforEach(array, cb) {
array.forEach(function(){
setTimeout(cb, 0);
});
}
asyncforEach([1,2,3,4], function(i) {
console.log(i)
});
传递变量(value
)回调,在setTimeout
。
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
参数之后的任何参数,传递给回调:
var timeoutID = scope.setTimeout(function[, delay, param1, param2, ...]);
你错过了获得在forEach
功能参数item
,并通过该项目进入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)
});
为什么你期望从阵列什么记录?因为你没有向'cb'传递任何参数,'i'是'undefined'。 – Xufox