Javascript 在另一个函数中解析/拒绝jquery承诺

Javascript 在另一个函数中解析/拒绝jquery承诺,javascript,jquery,promise,Javascript,Jquery,Promise,我试图找出一种方法来解析/拒绝函数中的jquery承诺,而创建承诺/延迟的函数无法直接访问该承诺 这种情况下,一个请求被发送到另一台机器,而对此的响应(可能会出现,也可能不会出现)由另一个函数处理。一旦我发送请求,我就会启动一个定时器,它会拒绝超时时的承诺。为了稍后根据远程机器的响应来解析/拒绝该承诺,我让send-request和recv-response(如果resp成功则解析)函数都可以访问该承诺,但是如果调用函数send-requests的代码尝试发送多个请求,这将不起作用 基本上,我希

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

这种情况下,一个请求被发送到另一台机器,而对此的响应(可能会出现,也可能不会出现)由另一个函数处理。一旦我发送请求,我就会启动一个定时器,它会拒绝超时时的承诺。为了稍后根据远程机器的响应来解析/拒绝该承诺,我让send-request和recv-response(如果resp成功则解析)函数都可以访问该承诺,但是如果调用函数send-requests的代码尝试发送多个请求,这将不起作用

基本上,我希望一次只允许/处理一个请求,直到该请求被解决或拒绝,即使调用代码尝试发送多个请求。关于如何实现这一点有什么想法吗


很抱歉,如果我的话听起来到处都是,我对这件事很陌生。

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

 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())
这没什么用。想想看

这是承诺的一个方面,让你有点难以理解。处理程序可以返回承诺,这些承诺随后被“插入”到承诺链中。规范使用的表达式是,承诺“假定”返回的承诺的状态。具体而言,这意味着,如果返回的承诺得到履行,则调用的承诺将被取消;如果返回的承诺被拒绝,则调用的承诺将被拒绝


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

听起来您的想法有点错误。特别是,如果请求是以正确的方式发出的(使用
jQuery.ajax(…)
或它的一种速记方法),那么所有解析/拒绝都将由jQuery为您管理。您所需要做的就是以一种或多种方式指定成功/错误处理程序,它们将在响应到达或请求超时时触发。发布一些代码,我相信有人会提供进一步的建议。