jquery - 用 Monadic 咒语召唤 JQuery Deferred

标签 jquery asynchronous monads jquery-deferred

灵感来自this (优秀)关于在 javascript 中使用 Promises 的讨论,我正在尝试弄清楚如何使用 Deferred 将异步和非异步函数链接在一起,以避免在使用我的 ' Global storage 时支付回调税' 代码。

我有一些与此相关的问题,但我会在这里一起问它们,因为上下文是相同的。

我无法解决的一件事是如何从非异步的东西中延迟 - 也就是说,我如何获取一个值,将其包装在 promise 中,然后直接返回它? (a -> M<a>)

此外,如何获取异步函数并将其包装,以便它直接返回其结果,但包装在 promise 中? ((a -> b) -> (a -> M<b>))

最后一个问题,对于单子(monad)怪胎 - 这个函数有标准名称吗? [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
});

希望这有帮助。

关于jquery - 用 Monadic 咒语召唤 JQuery Deferred,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5569805/

相关文章:

asynchronous - 如何异步对 Kotlin 中的多个项目执行网络请求?

javascript - Console.log显示隐藏对象信息

javascript - 单击第一个单选按钮时,自动打开该 div 内的单选按钮

javascript - 如何在 Meteor 中批量运行异步调用?

Haskell 多重仿函数

haskell - 为什么电梯的返回值不被限制为单子(monad)?

recursion - 是否可以使用连续传递样式将此递归函数转换为尾递归函数?

jquery - 动画 gif 不是动画

jquery - 如何在 jQuery 中通过自定义属性的特定值获取元素?

C#.NET 网络 API : cycling file upload location accessible and modifiable by various asynchronous HTTP requests