相关疑难解决方法(0)

JavaScript承诺then()排序

我还在学习JavaScript Promise,我遇到了一个我不理解的行为.

var o = $("#output");
var w = function(s) {
    o.append(s + "<br />");
}

var p = Promise.resolve().then(function() {
    w(0);
}).then(function() {
    w(1);
});

p.then(function() {
    w(2);
    return new Promise(function(r) {
        w(3);
        r();
    }).then(function() {
        w(4);
    });
}).then(function() {
    w(5);
});

p.then(function() {
    w(6);
});
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="output"></div>
Run Code Online (Sandbox Code Playgroud)

我希望这些语句按顺序运行 - 也就是说,输出就是

0
1
2
3
4
5
6
Run Code Online (Sandbox Code Playgroud)

相反,输出是

0
1
2
3
6
4
5
Run Code Online (Sandbox Code Playgroud)

即使去除内在Promise也会给我带来矛盾的结果. 1之前输出2,但6之前输出5 …

javascript promise

13
推荐指数
1
解决办法
8196
查看次数

标签 统计

javascript ×1

promise ×1