- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个函数,我想完成第一个 this.findLocation()
在返回 jsonObject 之前的每个循环上。问题是当函数返回 jsonObject 时,一些 findlocation
仍未完成循环。
这是该函数的代码:
generate (item) {
let jsonObj = {}
jsonObj.lookup = this.id
this.fields.forEach(field => {
if (field.prop === 'API') {
this.findLocation(item, field).then(function (value) {
let location = value
if (location) jsonObj[field.prop] = location.id
})
} else {
jsonObj[field.prop] = item[field.header]
}
})
return jsonObj
}
如有任何帮助,我们将不胜感激。
最佳答案
您需要使用Promise.all
等待每个异步操作完成:
generate (item) {
const obj = { lookup: this.id };
const proms = this.fields.map((field) => {
if (field.prop === 'API') {
// Make sure to *return* the `Promise`:
return this.findLocation(item, field).then((value) => {
if (value) obj[field.prop] = value.id
})
} else {
obj[field.prop] = item[field.header]
}
});
return Promise.all(proms)
.then(() => obj);
}
请注意,当使用 .map
时像这样,只有数组中的某些项目是 Promises,但这很好 - Promise.all
只会等待数组中的 promise 解决。数组中的非 promise (包括 undefined
值)将被忽略。
此外,一如既往, There's no such thing as a "JSON Object" - 如果你有一个对象或数组,那么你就有一个对象或数组,句号。 JSON 格式是一种在字符串中表示对象的方法,例如 const myJSON = '{"foo":"bar"}'
。如果不涉及字符串、序列化或反序列化,则也不涉及 JSON。
关于javascript - 等待 aysnc 调用每个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53405223/
好家伙, 0.错误描述 今天在开发中犯了一个比较严重的错误 对于Promise的错误使用 场景: 微信小程序中展示搜索条件列表 // API请求工具函
这个问题已经有答案了: How do I return the response from an asynchronous call? (42 个回答) 已关闭5 年前。 我有一个函数,我想完成第一个
我有一个远程服务,当特定事件发生时,我调用该服务来加载产品的定价数据。加载后,产品定价就会被广播,以供其他消费者在其他地方进行处理。 调用代码并不关心响应 - 它是“即发即忘”,响应应用程序事件并触发
当我使用 ExecutorService 进行异步调用时,它返回 Future 对象。根据它返回的 boolean 值,我必须记录异步调用的状态。 但是当我尝试从 future 对象调用方法 get
我在文档中找不到如何将 optionRenderer 属性与react-select async (Select.Async)一起使用 here is a question已经回答了,但是 rende
我在使用 Java 的 selenium Web 驱动程序自动执行此下拉操作时遇到问题 This是链接 - 转到名为 Github 用户的第 5 个下拉列表 (fetch.js) 我无法在搜索字段中输
我是一名优秀的程序员,十分优秀!