【发布时间】:2021-08-02 22:21:31
【问题描述】:
我正在开发一个即将完成的 Chrome 扩展程序。目前,当数据被提取完成时,我从我的 fetch 中得到响应,而不是正确的顺序。我想我将不得不使用 await 和 async 但我不确定如何。值得注意的是,我在后台脚本和使用 sendMessage 的内容脚本之间建立了“连接”。
我确实尝试过按照本教程进行操作,如果您以前做过,可能非常容易理解,但我不明白我的价格该怎么做 => {} 教程:https://web.archive.org/web/20201227111539/https://dev.to/shoupn/javascript-fetch-api-and-using-asyncawait-47mp
内容.js
function getPrices() {
for (var i = 0; i < 35; i++) {
chrome.runtime.sendMessage(
{contentScriptQuery: "queryPrice", itemURL: skins[priceNumber]},
price => {
console.log(price);
});
priceNumber = priceNumber + 1;
}
...
}
background.js
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
if (request.contentScriptQuery == "queryPrice") {
var url = "https://pixelboii.wtf/steamvalue.json";
var skinFullName = request.itemURL;
fetch(url)
.then(res => res.json())
.then(price => {
sendResponse(price.items_list[skinFullName].price["7_days"].average);
})
.catch(err => { throw err });
return true; // Will respond asynchronously.
}
});
感谢所有回复!
【问题讨论】:
-
您显示的代码建议您发送一次消息...那么响应的顺序怎么可能是错误的呢?
-
如果你在某种循环中调用 sendMassage - 展示你是如何做的 - 因为第一个代码不会从 async/await 中受益,因为该代码中没有承诺
-
哦,绝对的,更新了帖子!
-
你能解释一下正确顺序是什么意思吗?
-
正确顺序:要获取的第一个项目也应该是返回的第一个项目,第二个项目应该是要返回的第二个项目等等。
标签: javascript function google-chrome-extension fetch