为什么我的函数return总是_u 0 _v 0 _w null _x null?
Why my function return always _u 0 _v 0 _w null _x null?
如何 return 来自 React Native 中异步函数的值?
我正在尝试压缩用户提供的图像。
这是我的压缩函数,可以压缩每张图片
const compressFunction = async (item, format = SaveFormat.JPEG) => {
const result = await manipulateAsync(
item.uri,
[],
{ compress: 0, format }
)
return result
};
这是我尝试调用的函数。这是行不通的,console.log return Promise { _u 0, _v 0, _w null, _x null }。 compressFunction 正在工作,我可以 console.log 并查看“compressFunction(item)”的每个 return 的结果,但我在数组列表中看不到它们。
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)
}
我没发现我做错了什么,我已经研究了几个小时了。如果有人能帮助我,我将不胜感激
尝试await Promise.all(items.map(compressFunction))
调用 list.map(async function)
会将列表中的每个元素转换为 Promise。
编辑:如果你把它写得更冗长,你可以看到这里发生了什么
const promises = items.map(item => {
return new Promise((res) => {
compressFunction(item).then(result => {
return res(result);
});
});
});
// Now with the list of promises we have to use the Promise api
// to wait for them all to finish.
Promise.all(promises).then(results => {
// do stuff with results
});
Async/await 对于此语法
只是 shorthand
如何 return 来自 React Native 中异步函数的值? 我正在尝试压缩用户提供的图像。
这是我的压缩函数,可以压缩每张图片
const compressFunction = async (item, format = SaveFormat.JPEG) => {
const result = await manipulateAsync(
item.uri,
[],
{ compress: 0, format }
)
return result
};
这是我尝试调用的函数。这是行不通的,console.log return Promise { _u 0, _v 0, _w null, _x null }。 compressFunction 正在工作,我可以 console.log 并查看“compressFunction(item)”的每个 return 的结果,但我在数组列表中看不到它们。
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)
}
我没发现我做错了什么,我已经研究了几个小时了。如果有人能帮助我,我将不胜感激
尝试await Promise.all(items.map(compressFunction))
调用 list.map(async function)
会将列表中的每个元素转换为 Promise。
编辑:如果你把它写得更冗长,你可以看到这里发生了什么
const promises = items.map(item => {
return new Promise((res) => {
compressFunction(item).then(result => {
return res(result);
});
});
});
// Now with the list of promises we have to use the Promise api
// to wait for them all to finish.
Promise.all(promises).then(results => {
// do stuff with results
});
Async/await 对于此语法
只是 shorthand