我尝试构建异步forEach
函数,但不幸的是它返回值undefined
而不是我希望的数组内容。我做错了什么?
function asyncforEach(array, cb) {
array.forEach(function(){
setTimeout(cb, 0);
});
}
asyncforEach([1,2,3,4], function(i) {
console.log(i)
});
答案 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)
});