0

我有以下代码:

(saveData())
.pipe(function(data){return sendhandovermail($('#editperson_id').val());})
.pipe(function(data){setHistory(_eciId,'4','12',true);})
.pipe(function(data){window.location.href = 'input.cfm?m=4&id=45';})
.fail(function(data){$('##msgDialogDetail').html("Error while saving. Please contact bla@blup.com");});

代码有效(没有错误)但是...有人告诉我 .pipe() 方法将一个接一个地执行所有 ajax 调用。如果 A 返回,B 将开始。虽然当我运行它时,情况并非如此。我是不是理解错了,或者我应该如何编写这个链让它一个接一个地执行?

4

1 回答 1

0

我应该如何编写这个链让它一个接一个地执行?

您应该在 pre 管道中返回一个承诺,后者将根据 pre 管道返回的承诺运行。

像这样:

var posting = $.post('/step1', data1)
            .pipe(function () {
                return $.post('/step2', data2);
            })
            .pipe(function () {
                return $.post('/step3', data3);
            });

我们应该在 1.8+ jQuery 中使用then函数而不是。pipe

于 2019-03-11T06:07:49.520 回答