异步函数包装器
用于统一处理异步函数的返回值和异常
/**
* 异步函数包装器,用于统一处理异步函数的返回值和异常
* @param {Promise} promise - 一个Promise对象
* @returns {Array} - 返回一个数组,第一个元素是Promise的解析结果,第二个元素是捕获到的异常
*/
export const asyncWrapper = async (promise) => {
try {
// 等待Promise解析,并返回解析结果
const reault = await promise
// 成功时返回解析结果和null
return [reault, null]
} catch (e) {
// 失败时返回null和异常对象
return [null, e]
}
}
异步迭代器
每隔2秒输出1到5
const asyncRange = {
from: 1,
to: 5,
[Symbol.asyncIterator] () {
return {
current: this.from,
last: this.to,
async next () {
await new Promise(resolve => setTimeout(resolve, 2000))
if (this.current <= this.last) {
return {
done: false,
value: this.current++,
}
} else {
return {
done: true,
}
}
},
}
},
};
(async () => {
for await (const n of asyncRange) {
console.log(n)
}
})()