给定的两种语法的工作方式是相同还是不同?
functionName.then((data) => {console.log(data)})
.catch((e) => {console.log(e)});
和
(async () => {
let data = (await client.function(input));
console.log(data);
})().catch(e => {
console.log(e);
});
最佳答案
虽然输出 是相同的,但这两者在 JavaScript 运行时的操作略有不同。
第一个 Promise 示例中的 then
处理函数在 async
示例中不存在。虽然差异很小,但还是存在的。 then
函数将被添加到事件循环调用堆栈中,而在异步示例中,await
调用在运行时的较低级别处理。
另外,命名函数(functionName
)表示函数已经自己保存到内存中,在第二个例子中一个对象与一个方法一起使用,这是不同的,意味着不同的内存用法。此外,第二个示例将所有内容都包装在 IIFE 中(以断言 async
性质),这又增加了一层和差异。
关于javascript - 被赋予异步函数并且 .then() 是否不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57822075/