javascript中的map()是同步的

Is map() in javascript synchronous?

本文关键字:同步 中的 map javascript      更新时间:2023-09-26

功能为:

[1,2,3].map( function (item)
{
  console.log(item);
  //return 'something';
});

我期望的行为是只得到1作为输出,除非我取消

的注释
//return 'something'

但是我真的得到

1
2
3

我做错了什么?

更新:

我正在用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);
        }
);

返回相同的

1
2
3

我真的想等到我得到一个返回或回调,直到下一个项目被执行。

async.mapSeries([1,2,3], function (item,callback)
    {
        console.log(item);
        //callback(null,true)
    }, function (err,result)
        {
            console.log(result);
        }
);

是,地图是同步的。
这是一个高阶函数,它接受一个新函数并将其应用于给定的数组。

有些人认为,因为他们给map一个函数作为参数,那么它"应该"像一个事件回调函数,但它真的没有。map函数只是将函数形参应用到数组中,只有在完成后,它才继续对map块后的结果代码执行。

至于你的"预期行为"-它只是不像你想象的那样工作;)

" map()方法使用对该数组中的每个元素调用提供的函数的结果创建一个新数组。"

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map

为每个项目调用回调,执行逻辑并将返回值设置为新数组中的一个项目。