akun
akun
发布于 2025-03-21 / 0 阅读
0
0

异步处理

异步函数包装器

用于统一处理异步函数的返回值和异常

/**
 * 异步函数包装器,用于统一处理异步函数的返回值和异常
 * @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)
  }
})()


评论