从异步函数返回Promise或Resolved Value?

时间:2017-12-15 22:30:15

标签: javascript async-await

我有一个Javascript async / await设计问题。

想象一下这个功能存在:

async function readFile(filename) { 
   // Asynchronously reads file and returns the content as string
}

现在,如果我将readFile与某个参数一起使用并返回其结果,我可以这样做:

async function readSettings1() {
   const settings = await readFile("settings.json");
   return settings;
}

或:

async function readSettings2() {
   return readFile("settings.json");
}

我理解这两种方法的工作方式类似,必须以相同的方式调用。他们都回报了Promises。有几个句法差异:

  1. readSettings1首先解析readFile的值,然后返回硬结果。这里,关键字async用于函数定义,因此我可以使用await

  2. readSettings2真的只是一个直通。实际上,我可以从此函数定义中省略async

  3. 我的问题是:readSettings1readSettings2之间是否存在语义差异?他们的行为方式有何不同?你喜欢哪种风格?为什么?你有没有看过推荐一种风格而另一种风格的文档?

0 个答案:

没有答案