灵感来自this(优秀)关于在 javascript 中使用 Promises 的讨论,我正在尝试弄清楚如何使用 Deferred 将异步和非异步函数链接在一起,以避免在使用我的 ' 时支付回调税全局存储' code.
我有一些与此相关的问题,但我会在这里一起问它们,因为上下文是相同的。
我无法解决的一件事是如何从非异步的东西中延迟 - 也就是说,如何获取一个值,将其包装在承诺中,然后直接返回它? (a -> M<a>
)
另外,如何获取异步函数并将其包装,以便它直接返回其结果,但包装在承诺中? ((a -> b) -> (a -> M<b>)
)
最后一个问题,对于单子怪胎 - 这个函数有标准名称吗?[a] -> (a -> M<b>) -> M<[b]>
将值包装到 Promise 中就像使用 $.when 一样简单:
var promise = $.when( value );
另外,从 jQuery 1.6 开始,您有一个非常简单的链接方法(管道):
var chained = functionThatReturnsAPromise().pipe(function( resolveValue ) {
return functionThatReturnsAnotherPromise( resolveValue );
});
chained.done(function() {
// Both asynchronous operations done in sequence
});
希望这可以帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)