如何從React Native的異步函式中回傳值? 我正在嘗試壓縮用戶提供的圖片
。這是我的壓縮函式,其中壓縮了每張圖片
。const compressFunction = async (item, format = SaveFormat.JPEG) => {
const result = await manipulateAsync(
item.uri,
[],
{ compress: 0, format }
)
回傳結果
};
下面是我嘗試呼叫的函式。compressFunction是有效的,我可以通過console.log看到 "compressFunction(item) "的每個回傳的結果,但我不能在陣列串列中看到它們。
const compressImages = (items) => {
const list = items.map( async (item) => ( await compressFunction(item)) )
console.log(list)
}
但是,例如,當我試影像這樣呼叫時,它是有效的。
const compressImages = async (items) => {
const list= await compressFunction(items[0])
console.log(list)
}
我不知道我做錯了什么,我已經研究了幾個小時。如果有人能幫助我,我將不勝感激
uj5u.com熱心網友回復:嘗試 await Promise.all(items.map(compressFunction))
呼叫list.map(async function)將把list中的每個元素轉化為一個Promise。
編輯:如果你把這句話說得更啰嗦,你就可以看到這里發生的事情了
const promises = items.map(item => {
return new Promise((res) => {
compressFunction(item).then(result => {
回傳res(result)。
});
});
});
// 現在有了這個承諾串列,我們必須使用Promise api
// 來等待它們全部完成。
Promise.all(promises).then(results => {
//對結果做一些事情
});
Async/await只是這種語法的簡寫
。轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/318051.html
標籤:
上一篇:為什么nodemailer在這里出錯||UnhandledPromiseRejectionWarning||沒有定義收件人
