Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.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 当promise需要其返回的数据时,如何使用$.when().then()?_Jquery - Fatal编程技术网

Jquery 当promise需要其返回的数据时,如何使用$.when().then()?

Jquery 当promise需要其返回的数据时,如何使用$.when().then()?,jquery,Jquery,如果我的问题没有道理,我首先道歉 我一直在跑进比赛状态,然后承诺,到目前为止还不错,但后来我又开始遇到另一个比赛状态。我在document.ready上填充了3个下拉列表,我还有一个填充一组字段的函数。所以我试着把所有的东西重新排序,但都不起作用。这就是我所拥有的 var orderStatusPromise = LoadOrderSummaryOrderStatus(); var jobTypePromise = LoadOrderSummaryJobType(); var leadSou

如果我的问题没有道理,我首先道歉

我一直在跑进比赛状态,然后承诺,到目前为止还不错,但后来我又开始遇到另一个比赛状态。我在document.ready上填充了3个下拉列表,我还有一个填充一组字段的函数。所以我试着把所有的东西重新排序,但都不起作用。这就是我所拥有的

var orderStatusPromise = LoadOrderSummaryOrderStatus();

var jobTypePromise = LoadOrderSummaryJobType();

var leadSourcePromise = LoadOrderSummaryLeadSource();

orderStatusPromise.done(function (data) {
    ShowOrderSummaryOrderStatus(data);
});

jobTypePromise.done(function (data) {
    ShowOrderSummaryJobType(data);
});

leadSourcePromise.done(function (data) {
    ShowOrderSummaryLeadSource(data);
});
我想做的是使用$.when().then()并将所有承诺放在$.when()和.then()中,运行填充字段的函数,这将最终消除竞争条件。
.done(…)中的数据被用来填充下拉列表。

我弄明白了如何将承诺添加到$.when().then()中,我需要做的是从.done()语句中删除分号,并用逗号替换它们

var orderStatusPromise = LoadOrderSummaryOrderStatus();

var jobTypePromise = LoadOrderSummaryJobType();

var leadSourcePromise = LoadOrderSummaryLeadSource();

var countiesPromise = LoadOrderSummaryCounties();

$.when(
    orderStatusPromise.done(function (data) {
        console.log("OrderStatus done");
        ShowOrderSummaryOrderStatus(data);
    }),

    jobTypePromise.done(function (data) {
        console.log("JobType done");
        ShowOrderSummaryJobType(data);
    }),

    leadSourcePromise.done(function (data) {
        console.log("OrderSummary done");
        ShowOrderSummaryLeadSource(data);
    }),

    countiesPromise.done(function (data) {
        console.log("Counties done");
        ShowOrderSummaryCounties(data);
    })
).then(
FillOrderSummaryCustomerFields(HomeStorage.Keys.OrderID));

好的,你已经写下了你想做的事情,听起来很可靠。是什么阻止了你这么做?@Tomalak,我想我已经弄明白了,并且开始工作了,但是仍然发生了一些比赛情况,这在你提供的小背景下是不可能解决的。@Tomalak,我是否应该开始一个关于比赛条件的新问题,并提供所有必要的代码,或者只是提出我让它工作了,并且我仍然得到了比赛条件。如果你问我,这个问题在没有任何额外信息的情况下没有什么价值。想象一下,作为一个不参与其中的第三人,他试图从中学到一些东西。直到现在还不清楚到底是什么问题。既然还没有人回答,你应该充实这个问题,直到它包含足够的信息。