最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

使用等待而不是Promises的正确方法是什么?

运维笔记admin13浏览0评论

使用等待而不是Promises的正确方法是什么?

使用等待而不是Promises的正确方法是什么?

我已经使用Promise很长一段时间了,它们总是我用来控制程序工作流程的“东西”。例:

Promise
  .resolve(obj)
  .then(doSomething1)
  .then(doSomething2)
  .catch(handleError)

而现在,我想改为试用风格,但我不知道究竟什么是正确的方法。

V1:

try {
  var body = await Promise
               .resolve(obj)
               .then(doSomething1)
               .then(doSomething2)
} catch (error) {
  callback(error)
}
callback(null, {
  statusCode: 200,
  body
})

V2:

try {
  var body = await Promise
               .resolve(obj)
               .then(doSomething1)
               .then(doSomething2)
               .then(body => {
                 callback(null, {
                   statusCode: 200,
                   body
                 })
               })
} catch (error) {
  callback(error)
}

什么是正确的方法?

回答如下:

您不必使用回调函数来切换到async / awaitasync函数只是一个Promise-returns函数,await就是为了方便起见。所以相当于你原来的功能就是:

async function fn() {
  try { 
    const obj = ...;
    const result1 = await doSomething1(obj);
    const result2 = await doSomething2(result1);
    return result2;
  } catch (err) {
    return handleError(err);
  }
}

如果你确实想要那个回调:

async function fn(callback) {
  try { 
    const obj = ...;
    const result1 = await doSomething1(obj);
    const result2 = await doSomething2(result1);
    callback(null, result2);
  } catch (err) {
    callback(err);
  }
}
发布评论

评论列表(0)

  1. 暂无评论