- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
好的,所以我四处搜索,没有发现与此问题相关的任何内容。
我的问题是这样的 ->
我使用从 api 获取的一些信息创建一个对象(插入数组)。从 API 获取信息后,我需要调用另一个 API 来获取有关用户的更多信息。由于用户有多个键,我希望能够通过一个简单的函数将它们设置为内联。
我正在做这样的事情 ->
_item.push({
Author: setPeople(item.Author.Title),
Title: item.Title,
....
Requester: setPeople(item.Requester.Title
})
目前我得到的是 promise 集(全部),而不是PromiseValue
。我知道您通常会执行类似 setPeople(name).then(() => {})
的操作,但这在我的对象中不起作用(设置 key 太快)。
关于我应该如何解决这个问题有什么建议吗?
使用更多代码进行更新。
export const retrieveIrfItems = async (spId) => {
let spQuery = "SITE" + SpQueryExtend1 + spQueryExpand;
return new Promise((resolve, reject) => {
let _items = [];
axiosApi.get(SiteUrl + spQuery).then((response) => {
//console.log(response.data.d);
return response.data.d;
}).then(async (item) => {
//let requesterSP = setPeople()
const createSPUser = async (user) => {
let spUser;
console.log("User prop is");
console.log(user);
setPeople(user).then((item) => {
spUser = item;
});
return spUser;
}
_item.push({
Author: setPeople(item.Author.Title),
Title: item.Title,
....
Requester: setPeople(item.Requester.Title
})
忽略未使用的功能,我仍在进行测试以找到解决此问题的方法。
感谢评论,找到了修复程序。
使用 async/await 对我没有帮助,因为我仍然会收到待处理或未定义的 promise 。我必须使用的是 ->
请求者:await setPeople(item.Requester.Title).then((user) => { return user }),
在我的对象中使用它似乎可行,但我的问题是......这种方法有多好?如果有很多字段具有这种行为(当前为 5 个),那么页面速度是否会减慢...很多?
最佳答案
那么你应该尝试这样的事情:
export const retrieveIrfItems = async (spId) => {
return new Promise((resolve, reject) => {
let spQuery = "SITE" + SpQueryExtend1 + spQueryExpand;
let _items = [];
try{
const axiosApiItem = await axiosApi.get(SiteUrl + spQuery);
const item = axiosApiItem.data.d;
_item.push({
Author: await setPeople(item.Author.Title),
Title: item.Title,
...
Requester: await setPeople(item.Requester.Title)
});
return resolve(_items);
}catch(e){
return reject(e);
}
});
}
Async/await 是一种使用异步Promise
函数的方法。 async
关键字告诉 javascript 编译器该函数将使用一个或多个异步函数。 await
关键字告诉编译器下一个函数调用是异步的并返回一个 promise 。
在您的代码中,您的第一个 then()
函数应该返回一个 promise ,但事实并非如此,这就是无法访问第二个 then()
的原因。
此外,在您的代码中,您的 new Promise
不会返回任何内容。当你创建一个新的 Promise 时,你必须通过调用 resolve()
或 reject
来结束它。
希望对你有帮助...
关于javascript - 创建对象时返回PromiseValue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53870968/
我目前在第一次使用 Promise.all() 时遇到问题(两种获取方法)。 目前,当我在控制台记录我的响应时,我可以在响应中看到我试图在 promiseValue 下获取的数据。但我不确定如何访问它
我试图显示client模式中的信息详细信息。点击@click="showDetails(props.row.id)"后. 我正在使用axios.get在方法中并返回数据。现在,它将数据作为 Promi
我是 React-Redux 的新手。我正在对 json 文件进行 api 调用,并希望将此文件的内容作为数组返回。我没有太多地处理 Promises,所以我对访问它们的知识有点模糊。基本上,这就是我
尝试使用 fetch polyfill 发出 DELETE 请求,但我得到 Uncaught TypeError: Cannot read property 'then' of undefined,这
我正在尝试返回 json 对象数组,但下面的代码返回 [[PromiseValue]] 并且数据肯定在那里。 “函数的结果” 如何获取 json 对象数组并将其设置为状态 注意:如果我在 getEnd
我已经搜索了 StackOverflow 并阅读了有关从返回的 Promise 获取值的主题,但由于某种原因,这些示例对我不起作用。 我的代码: const getThatZip = (zip) =>
情况是:我有一个城市数组,函数getCityForecast获取每个城市的天气预报,并将接收到的转换后的数据返回为所需的格式。我需要将它们保存到数组中,并将该数组保存在组件的state中。 this.
下午好。我是 Firebase batabase 的新手。请告诉我如何从我的数据库中获取数据以便进一步与他们合作。现在我的函数返回 Promise {} 以及 PromiseValue 中我需要的日期
我是一名优秀的程序员,十分优秀!