Wil*_*een 4 javascript callback node.js promise es6-promise
做一些研究Promises,我知道一个Promise对象可以处于三种状态(待定、已解决、被拒绝)。负责这三种状态中的每一种的逻辑都在传递给Promise构造函数的回调函数中。这个回调函数有 2 个函数作为它的参数解析和拒绝,当这个回调导致成功或失败时调用它们。
在Promise实例化之后,我们可以通过调用.then它的函数向承诺添加响应处理程序回调。该.then函数将 2 个回调函数作为其参数。第一个参数是调用Promiseresolve函数时调用的回调Promise函数,调用reject函数时调用第二个回调函数。您也可以拨打.catch上Promises处理被拒绝的承诺,虽然这仅仅是语法糖:
.then(undefined, () => { failure callback})
Run Code Online (Sandbox Code Playgroud)
我发现更难理解的是该.then 方法返回一个 Promise. 例如在以下代码中:
.then(undefined, () => { failure callback})
Run Code Online (Sandbox Code Playgroud)
在第一个示例中,.then它返回 : nr + 5。在解决Promise此值的情况下成功传递到第二个.then。这怎么可能?它是在引擎盖下:
return new Promise((res,rej) => {
res(nr + 5)
})
Run Code Online (Sandbox Code Playgroud)
或者这是由其他原因引起的?
这是一个promise的行为,它被描述为here
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/then
在返回值部分:
如果处理函数返回一个值,则返回的
thenPromise 将使用返回值作为其值进行解析;
是的,这是 promises的主要特征之一:它们是可链接的。
该then方法确实返回一个新的承诺,该承诺将通过回调的结果解决。它确实构造了 anew Promise并在调用resolve回调时使用返回值进行调用。
您可能想看看这个玩具实现以了解它是如何实现的(尽管没有错误处理)。
| 归档时间: |
|
| 查看次数: |
11654 次 |
| 最近记录: |