Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何实现和jquery承诺?_Jquery_Promise - Fatal编程技术网

如何实现和jquery承诺?

如何实现和jquery承诺?,jquery,promise,Jquery,Promise,我想要一个承诺,当允诺人1和允诺人2的两个承诺都得到解决时,这个承诺本身就会得到解决。我该怎么做 以下是我当前的可怕代码: var c = 0; var d = $.Deferred(); promise1.then(() => { c++; if (c == 2) { d.resolve();

我想要一个承诺,当允诺人1和允诺人2的两个承诺都得到解决时,这个承诺本身就会得到解决。我该怎么做

以下是我当前的可怕代码:

            var c = 0;
            var d = $.Deferred();
            promise1.then(() => {
                c++;
                if (c == 2) {
                    d.resolve();
                }
            });
            promise2.then(() => {
                c++;
                if (c == 2) {
                    d.resolve();
                }
            });
            return d.promise();
我可以调用助手函数吗?

使用

差不多

$.when(promise1, promise2).then(function() { /* do something */ });
这将允许您将一个或多个延迟分组,并仅在它们都已解决时才执行某些操作。或者,如果其中任何一个出现故障,则调用
failCallback

当主延迟解析时,它将被传递所有组件延迟的解析值。

您想要jQuery的。

有关完整示例,请查看。要点如下:

$.when( $.ajax("/myURL/"), someOtherDeferred ).done(function( a1, a2 ) {
   // ... Both deferrals are complete!
});
请注意,
$.ajax
创建了一个“”(类似于
promise
),因此两者可以互换



如果您想在承诺失败的情况下执行某些操作,请使用而不是
.done()

$。当
为您执行此操作时,包括正确的错误处理。@Bergi虽然在浏览器中,一切都是ajax承诺,但我肯定没有想过以这种方式搜索答案。我知道,但是,在这个主题上还有一些其他的非ajax问题(例如)与这个规范问题重复。我猜关键词是“等待”和“全部”或“多个”。有这么多的代表性,你肯定是那种应该以dup而不是最快的枪来接近的人。请注意,问题是“承诺”而不是“AJAX”。OP可能不知道它们是可互换的。大声说吧explanation@CaseyFalk这是属于一篇评论的东西,@Jhawins!:)
$.when(promise1, promise2).then(resolution)