【发布时间】:2019-03-01 14:55:11
【问题描述】:
我如何在外面使用承诺的答案。那我该怎么办?
arreglo.forEach((item) => {
if (item.tipoCampo == 3) {
self.campoSelects(item.tablaCampo)
.then(resp => {
console.log(resp)
})
.catch(e => console.log(e))
}
});
.then () 中的
console.log (resp) 知道它并正确打印,但是当我想从 forEach 中知道 resp 以在下面使用时,它说未定义 谢谢。
【问题讨论】:
-
你不能在
forEach之外使用响应,因为 Promise 是异步的。您可以使用 for ... of 循环和异步函数(developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…)。请注意,这将使 main 函数返回一个 Promise。 -
一种快速而肮脏的方法是将
resp分配给item,例如item.campoSelectsResult = resp,这是因为在 then() 范围内它可以访问 item 和 resp。 -
不要使用
forEach,最好使用map来生成与Promise.all一起使用的promise 数组。