use*_*910 14 javascript asynchronous map synchronous
功能是:
[1,2,3].map( function (item)
{
console.log(item);
//return 'something';
});
Run Code Online (Sandbox Code Playgroud)
我的预期行为只有1作为输出,除非我取消注释
//return 'something'
Run Code Online (Sandbox Code Playgroud)
但我真的明白了
1
2
3
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么 ?
更新:
我正在使用nodejs进行测试.
我真的不明白.
var async = require("async");
[1,2,3].map( function (item)
{
console.log(item);
//return 'something';
});
async.map([1,2,3], function (item,callback)
{
console.log(item);
//callback(null,true)
}, function (err,result)
{
console.log(result);
}
);
Run Code Online (Sandbox Code Playgroud)
两者都返回相同
1
2
3
Run Code Online (Sandbox Code Playgroud)
而且我真的想等到我得到一个回复或回调,直到下一个项目被执行.
解决了
async.mapSeries([1,2,3], function (item,callback)
{
console.log(item);
//callback(null,true)
}, function (err,result)
{
console.log(result);
}
);
Run Code Online (Sandbox Code Playgroud)
是这样做的方式.
fun*_*err 44
是的,地图是同步的.
它是一个更高阶的函数,它接受一个新函数并将其应用于给定的数组.
有些人认为,因为它们将函数作为参数提供给map它,它应该像一个事件回调函数,但事实并非如此.该map函数只是将函数参数应用于数组,并且只有在完成后,才会在映射块之后继续执行生成的代码.
至于你的"预期行为" - 它就像你想象的那样不起作用;)
| 归档时间: |
|
| 查看次数: |
23053 次 |
| 最近记录: |