更新对象并使用异步和等待功能推送到数组?

时间:2019-04-12 11:42:08

标签: node.js express promise

我们正在使用Activityasync从另一个函数中收集计数,但遇到了Promise问题,我们知道要使用await,但需要更新外部数组/对象。

我们如何等待仍更新then()元素并推送到数组?

示例代码:

forEach

1 个答案:

答案 0 :(得分:0)

getCounts返回一个Promise,因此您可以使用.then回调或async/await

getQuestionCounts: function(req, res){
  var arr = [];
  // not sure why you're doing this way
  module.exports.getCounts(req.data).then(data => {
    // data is available only here
    console.log(data);
    arr.push(data)
    // use arr here
  })
  // arr will be empty
  console.log(arr)
}

async/await

getQuestionCounts: async function(req, res){
  try {
    var arr = [];
    var count = await module.exports.getCounts(req.data);
    arr.push(count);
  } catch (e) {
    //handle error
    console.error(e)
  }
}

注意:所有async函数均返回Promise

使用module.exports

的首选方法
function someFunc() {
  return something;
}

function anotherFunc() {
  const result = someFunc()
  // do something
  return another;
}

module.exports = {
  // if you still want to export someFunc
  someFunc
  anotherFunc
}