javascript中的map()是否同步?

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函数只是将函数参数应用于数组,并且只有在完成后,才会在映射块之后继续执行生成的代码.

至于你的"预期行为" - 它就像你想象的那样不起作用;)