Javascript-为什么地图返回空数组?

时间:2019-06-21 08:55:47

标签: javascript arrays object ecmascript-6

该映射应该将内部查询的结果附加到每个对象。

var newobj = obj.map(function (frequentPosition) {
    var query = `SQL query that uses attributes of obj`;
    sequelize.query(query).then(result => {
       obj.newArrayAttribute = result[0]; 
       return obj;
       });
    });

返回的newobj是未定义的数组

1 个答案:

答案 0 :(得分:0)

当前,您确实会异步更改对象,但是您不必等待异步调用完成,这就是为什么看起来对象从未更改的原因。另外,您不会从.map内部返回任何内容,因此newobjundefined的数组。

sequelize.query(query)已经返回了一个诺言,如果您从.map回调中返回了一个诺言,则会得到一个诺言数组,您可以将其变成一个使用{{解析为一个数组的Promise。 1}}:

Promise.all

然后您可以将promise用作:

   const promise = Promise.all(obj.map(frequentPosition => {
    var query = `SQL query that uses attributes of obj`;
    return sequelize.query(query).then(result => {
      return { ...obj, newAttribute: result[0], };
    });
  });