Return Promise和await完全一样吗?

时间:2019-07-03 02:39:35

标签: javascript node.js

考虑以下两个功能:一个返回承诺对象,一个使用等待。它们的确切行为在后台相同吗?

async function f1 (event) {
  const promise = new Promise(function(resolve, reject) {
    fetch('https://google.com')
      .then(p=>p.status)
    });
  return promise
}

async function f2 (event) {
  const res = await fetch('https://google.com');
  return res.status;
}

我相信我也可以这样打电话:

var r1 = await f1(url);
var r2 = await f2(url);

这里的问题: 1. 2个电话正确吗? 2. f1和f2完全相同,它们的行为和用法是否完全相同?

1 个答案:

答案 0 :(得分:1)

如果http.get返回了一个Promise,您可以简化Promise示例,使其看起来像await示例。为了简单地回答您的问题,他们使用不同的语法执行相同的操作。

async function f1 (event) {
  return https
    .get(url)
    .then(res => res.statusCode);
}

async function f2 (event) {
  const res = await https.get(url);
  return res.statusCode;
}