【发布时间】:2021-02-28 13:20:41
【问题描述】:
我有一个嵌套的 promise,它获取数据然后将其呈现给 DOM。
我正在尝试将其转换为 async/await 语法,但因为它嵌套在 Promise 中。我无法转换它。
fetch(searchUrl)
.then(function (response) {
return response.json()
})
.then(function (data) {
searchLoader.style.display = "none";
for (let i = 0; i < 10; i++) {
let stock = `${data[i].name}, (${data[i].symbol})`;
listOfStocks.innerHTML += `<li class="list-group-item"><a href="./company.html?symbol=${data[i].symbol}">${stock}<a/></li>`;
// console.log(data[i].symbol)
}
return Promise.all(data.map(item => fetch(`${BaseUrl}company/profile/${item.symbol}`)));
})
.then(function (response) {
return Promise.all(response.map(x => x.json()));
})
.then(function (data1) {
console.log(data1);
for (let i = 0; i < listOfStocks.children.length; i++) {
if (data1[i].profile.changes >= 0) {
listOfStocks.children[i].innerHTML = `<img class="logo-for-list" src="${data1[i].profile.image}" /> ${listOfStocks.children[i].innerHTML} <span class="color-prc" style="color:green;"> ${data1[i].profile.changesPercentage}</span>`;
} else {
listOfStocks.children[i].innerHTML = `<img class="logo-for-list" src="${data1[i].profile.image}" /> ${listOfStocks.children[i].innerHTML} <span class="color-prc"> ${data1[i].profile.changesPercentage}</span>`;
}
}
谢谢
【问题讨论】:
-
忽略
Promise.all(…)表达式,并像对待任何其他承诺一样对待它。里面没有什么可以转换的。你能告诉我们你将线性then链转换为async/await的尝试吗? -
我正在添加作为答案-我重新尝试重构代码,它看起来还可以。
标签: javascript async-await fetch promise.all