先看一段代码,该代码自己天真以为
a
就是promise
后的结果,其实不是这样子的
|
|
打印的内容为:这里的直接返回a
其实就是一个promise
,不是直接.then
后的结果,但是在async
函数里操作该promise
的时候就是与.then
的结果操作;直接返回a
或者a + 'b'
等都是返回的promise
错误处理的注意点
一般的promise的错误处理方式都是通过.catch()
的方式去捕捉错误,如下所示:
通过async/await
改写可以简化代码:
还有一个很值得注意的地方:
|
|
第一个async函数,等待一个rejected状态的promise,并且被捕捉到,成功返回saved的状态的一个新的promise(await 会重新返回一个promise);
第二个直接返回一个rejected的Promise,直接返回就是一个未被捕捉异常的promise
|
|
在下面这种抛出错误的情况下,要在外层以throwError().catch()
的方式去捕捉错误;不能以try{}catch(err)
的方式去捕捉异常。
注意点:await 一定要在async函数里才是语义正确的,不能在一些callback里;比如:
|
|