【发布时间】:2021-01-25 03:47:38
【问题描述】:
我正在一个异步函数中返回一个新的 Promis,该函数正在向 api 发出请求,我可以在函数内部很好地控制台记录来自 api 的请求。但是当我尝试解决同一行时,我安慰document.sold 它不起作用。我希望checkPriceId 变量返回一个我可以用.then 捕获的promise,但这似乎不起作用。我也尝试在documents.forEach 循环周围使用promise.all 无济于事。
任何帮助将不胜感激。
这是代码
const checkPriceId = async test => {
return new Promise((resolve, reject) => {
const query = `*[_type == "products" && price_id == "${body.price_id}"]`
client.fetch(query, {}).then(documents => {
documents.forEach(document => {
//console.log(document.sold)
resolve(document.sold)
})
})
})
}
checkPriceId.then(test => {
console.log(test) // does nothing
})
console.log(checkPriceId) // just returns a async function
checkPriceId()
【问题讨论】:
-
您需要致电
checkPriceId:checkPriceId().then(...) -
你不想在每个文档上调用
resolve,顺便说一句,你可能想用documents.sold的数组调用resolve(同上resolve(documents.map(x => x.sold)))但首先你可以关注@ blex指令
标签: javascript async-await es6-promise