0

我试图找出一种方法来解决/拒绝创建承诺/延迟的函数无法直接访问的函数中的 jquery 承诺。

该场景是一个请求被发送到另一台机器并且对此的响应(可能会或可能不会出现)由另一个函数处理。一旦我发送请求,我就会启动一个计时器,它会在超时时拒绝承诺。为了稍后根据来自远程机器的响应来解决/拒绝承诺,我让发送请求和接收响应(如果响应成功则解决)函数都可以访问这个承诺,但是如果调用的代码发送请求的功能尝试发送多个请求,这是行不通的。

基本上我想一次只允许/处理一个请求,直到该请求被解决或拒绝,即使调用代码尝试发送多个请求。关于如何实现这一目标的任何想法?

对不起,如果我听起来到处都是,我对这些东西很陌生。

4

1 回答 1

0

如果我正确理解您的问题,您需要做的是配置远程端以返回一个承诺,然后调用该例程并从本地端的处理程序中返回其值:

 Promise
    .when (ready_for_remote_call)
    .then (function () {return remote_action_returning_promise ();})
    .then (
        function () {console.log("remote succeeded");},
        function () {console.log("remote failed");}
    )
;

请注意,这可以简化为

    .then (remote_action_returning_promise)

这与_

    .then (remote_action_returning_promise())

这没有任何用处。想想看。

这是 Promise 的一个方面,有点难以理解。处理程序可能会返回承诺,然后将其“插入”到承诺链中。规范使用了承诺“假设状态”返回承诺的表达。具体来说,这意味着如果返回的承诺被履行,则调用承诺将是;如果返回的 Promise 被拒绝,则调用 Promise 将被拒绝。

换句话说,不要认为它是远程端以某种方式拒绝本地端的承诺;将其视为返回一个承诺,如果将其作为处理程序调用,则本地承诺将采用的状态。

于 2013-07-05T09:59:58.187 回答