Javascript 异步/等待vs新承诺(解决、拒绝)
async/await与使用Javascript 异步/等待vs新承诺(解决、拒绝),javascript,promise,Javascript,Promise,async/await与使用.then、.finally和.catch 比如说 functionThatReturnsPromise(someVar).then((returnedValueFromPromise) => { console.log(returnedValueFromPromise) }) vs 我不确定承诺链是否只是旧的符号,它已经被新的async/await所取代。这两种方法都有使用案例吗?什么是更好的练习?这取决于你想要什么异步/等待是新的。这样想,他们允许
.then
、.finally
和.catch
比如说
functionThatReturnsPromise(someVar).then((returnedValueFromPromise) => {
console.log(returnedValueFromPromise)
})
vs
我不确定承诺链是否只是旧的符号,它已经被新的async/await所取代。这两种方法都有使用案例吗?什么是更好的练习?这取决于你想要什么<代码>异步/
等待
是新的。这样想,他们允许一个承诺像同步一样运行,而实际上它不是同步的
此外,使用async
/await
可以使代码更干净、更可读。
为了回答你的问题,他们在做什么方面没有太大的区别。语法完全不同
承诺链并不是一种古老的方式,它们是相当新的,只是async
/await
来得晚了一点-为您提供了一种处理承诺的“更好”方式
最后,您可以在代码中互换使用它们。这取决于您想要什么<代码>异步/
等待
是新的。这样想,他们允许一个承诺像同步一样运行,而实际上它不是同步的
此外,使用async
/await
可以使代码更干净、更可读。
为了回答你的问题,他们在做什么方面没有太大的区别。语法完全不同
承诺链并不是一种古老的方式,它们是相当新的,只是async
/await
来得晚了一点-为您提供了一种处理承诺的“更好”方式
最后,您可以在代码中互换使用它们。您误解了它的工作原理。使用
async/await
可以实现代码执行的同步语法流,即:
try {
const returnedValueFromPromise = await functionThatReturnsPromise(someVar);
} catch (err) {
console.error(err);
throw err
}
注意
- 代码块必须位于
async
作用域函数内 - 你仍然需要做错误处理,不能认为承诺总是有效的
- 默认情况下,
包含的函数返回的所有值都是承诺值async
- 您误解了它的工作原理。使用
async/await
可以实现代码执行的同步语法流,即:
try {
const returnedValueFromPromise = await functionThatReturnsPromise(someVar);
} catch (err) {
console.error(err);
throw err
}
注意
- 代码块必须位于
async
作用域函数内 - 你仍然需要做错误处理,不能认为承诺总是有效的
- 默认情况下,
包含的函数返回的所有值都是承诺值async
- 需要注意的是,如果请求失败,你需要将
await
语句包装在try-catch块中,我个人认为这比常规承诺链更丑陋。需要注意的是await
,您需要将await
语句包装在try-catch块中,以防请求失败,我个人认为这比常规承诺链更难看。async-await只是语法上的承诺糖,它使代码看起来更具可读性,特别是当您有嵌套的pomise时,从类似的问题中检查这个漂亮的例子,比较示例是没有意义的。其中一个定义了函数tahtreturnspromise
,另一个调用它并使用promise?来回答题为“Async/Await vs new promise(resolve,reject)”的问题:Async/Await不就是一个API吗?它只是在引擎盖下使用Promises(和generators?)以获得更好的易读性吗?Async Await在语法上是promise的糖,它使代码看起来更具可读性,特别是当您有嵌套的pomise时,从类似的问题中检查这个漂亮的例子,比较示例是没有意义的。其中一个定义了函数tahtreturnspromise
,另一个调用它并使用promise?来回答题为“Async/Await vs new promise(resolve,reject)”的问题:Async/Await难道不只是一个API,它使用Promises(和生成器)来提高可读性吗在引擎盖下?您不需要将所有内容都包装在try
/catch
中,就像您不必在每个承诺上安装.catch()
处理程序一样。你只需要在你想处理错误的地方去做,通常是在最后。你不需要把所有的东西都包装在try
/catch
中,就像你不需要在每个承诺上都安装.catch()
处理程序一样。你只需要在你想处理错误的地方去做,通常在最后。