那些年写过的异步函数
/ 4 min read
上面函数返回 promise
可以用 then
来获取 resolve
值:
可以用 es6 中的 async await
来替代 promise
:
onFulfilled returns a promise
If onFulfilled
returns a promise, the return value of then
will be resolved/rejected by the promise.
promise then chain
The then
method returns a Promise
which allows for method chaining.
If the function passed as handler to then
returns a Promise
, an equivalent Promise
will be exposed to the subsequent then
in the method chain.
then
的返回值会被下一个 then
捕获, 如果没有 return
默认 return undefined
.
如果返回值是个 Promise
, 下一个 then
会捕获 resolve
的参数.
在 es6 中:
同步执行 task
串行执行 task
串行执行并收集结果
测试:
for 代替版的串行执行
asyncForEach ployfill
异步递归
Catch error
reject
会被第一个 then
中捕获, 所以最后的 catch
不会执行.
此时第一个 promise
reject
, 被最后的 catch
捕获, 所有中间的 then
都不会执行.
async function
中使用 try catch
捕获异常: