我想在 jquery ajax 调用返回的承诺之外使用 When-JS 功能。有转换方案吗?
编辑 1
我想在 jquery ajax 调用返回的承诺之外使用 When-JS 功能。有转换方案吗?
编辑 1
是的,Promises/A+ Promise 之类的当 Promise 具有此功能的设计时,它们被构建为同化 jQuery thenables。
为了将任何外部 thenable(如 jQuery 承诺)转换为 when 承诺,只需将其包装在when
:
when($.get(...)).then(...
when(x)
- 得到一个值得信赖的承诺x
。ifx
是一个外来的 thenable,a 返回一个紧随其后的 promisex
。
在Promises/A+规范中详细说明了thenables 是如何被同化的:
承诺解决过程是一个抽象操作,将承诺和值作为输入,我们将其表示为
[[Resolve]](promise, x)
。如果x
是一个有then
能力的,它试图让承诺采用 的状态x
,假设它的x
行为至少有点像一个承诺。否则,它以 value 履行承诺x
。