导出 const 异步函数 => 将结果分配给 const
Export const async function => assign the result to a const
我正在尝试将异步函数的结果存储到 const 但没有成功。
代码:
这里工作正常,return 转换后的 json
import pako from 'pako';
export const unzipFile = async (json_to_unzip) => {
try {
// fetch file with CORS enabled
const res = await fetch(json_to_unzip, {
mode: 'cors',
});
// convert to arrayBuffer for further processing
const buf = await res.arrayBuffer();
// and convert blob to arrayBuffer using `await blob.arrayBuffer()`
console.log('input size: ', buf.byteLength);
// decompress file
const outBuf = pako.inflate(buf);
console.log('output size: ', outBuf.byteLength);
// convert arrayBuffer to string
const str = new TextDecoder().decode(outBuf);
// print json object
const unzippedFile = JSON.parse(str);
console.log('json object', unzippedFile[0]);
return unzippedFile[0];
} catch (err) {
console.error('unable to decompress', err);
}
};
从这里我想把它存储到一个常量中:
const emissions = (async () => {
const res = await unzipFile(emissions_json);
return res;
})();
const emissions = unzipFile(emissions_json).then(res => res)
console.log(排放量)在这两种情况下仍然return是未决的承诺
Async functions always return a promise. If the return value of an async function is not explicitly a promise, it will be implicitly wrapped in a promise.
文档:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function
emissions 是一个 promise,因为它持有从异步匿名函数返回的 promise 对象。要console.log你可以做的结果:
emissions.then(res => console.log(res))
发生这种情况是因为您试图管理异步操作的结果,因此您不能将其视为同步操作。话虽如此,要将结果存储到 const 中,您需要像使用 await 关键字或使用 Promise.then() 处理程序一样在适当的异步函数中执行此操作:
unzipFile(emissions_json).then(res => {
//logic for using the res
})
我正在尝试将异步函数的结果存储到 const 但没有成功。
代码: 这里工作正常,return 转换后的 json
import pako from 'pako';
export const unzipFile = async (json_to_unzip) => {
try {
// fetch file with CORS enabled
const res = await fetch(json_to_unzip, {
mode: 'cors',
});
// convert to arrayBuffer for further processing
const buf = await res.arrayBuffer();
// and convert blob to arrayBuffer using `await blob.arrayBuffer()`
console.log('input size: ', buf.byteLength);
// decompress file
const outBuf = pako.inflate(buf);
console.log('output size: ', outBuf.byteLength);
// convert arrayBuffer to string
const str = new TextDecoder().decode(outBuf);
// print json object
const unzippedFile = JSON.parse(str);
console.log('json object', unzippedFile[0]);
return unzippedFile[0];
} catch (err) {
console.error('unable to decompress', err);
}
};
从这里我想把它存储到一个常量中:
const emissions = (async () => {
const res = await unzipFile(emissions_json);
return res;
})();
const emissions = unzipFile(emissions_json).then(res => res)
console.log(排放量)在这两种情况下仍然return是未决的承诺
Async functions always return a promise. If the return value of an async function is not explicitly a promise, it will be implicitly wrapped in a promise.
文档:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function
emissions 是一个 promise,因为它持有从异步匿名函数返回的 promise 对象。要console.log你可以做的结果:
emissions.then(res => console.log(res))
发生这种情况是因为您试图管理异步操作的结果,因此您不能将其视为同步操作。话虽如此,要将结果存储到 const 中,您需要像使用 await 关键字或使用 Promise.then() 处理程序一样在适当的异步函数中执行此操作:
unzipFile(emissions_json).then(res => {
//logic for using the res
})