异步和承诺困境

时间:2018-11-24 19:52:37

标签: javascript asynchronous promise

这两个函数都返回一个Promise。那么这两种方法有什么区别?我不敢相信这只是个人喜好。

function somePromise(){
   return new Promise((resolve, reject) => {
      resolve(':D');
   });
}


async function someAsync(){
   return ':D';
}

2 个答案:

答案 0 :(得分:2)

第二个功能使用了一种较新的语言功能,该功能可能并非在所有环境中都可用。就是这样。

new Promise构造函数is still necessary用于在您具有尚未返回诺言的异步函数时创建诺言。当然,在您的特定示例中,您创建了一个promise,并立即用一个同步获得的值来解决它,因此您可以将return Promise.resolve(':D');写为第三个选项。

答案 1 :(得分:0)

第一个函数是传统函数,它手动返回一个promise,该promise依次解析为:D

第二个函数是一个异步函数(因此是异步的)。异步函数默认情况下会返回promise,因此它也会返回promise。

总体而言,方法非常相似,除了可以从异步函数内部使用await以避免嵌套太多回调。使用异步的一个警告是,它不像第一个选项那样得到广泛支持。