0

使用 Promise 设置 JavaScript 函数的序列。

下面提到的代码给出以下输出,即 3 2 1

而不是 1 3 2

    let functionOne = function ()
    {
        return new Promise(function(resolve,reject){            
            One();
            resolve();              
        });
    }

    let functionTwo = function ()
    {
        return new Promise(function(resolve,reject){            
            Two();
            resolve();              
        });
    }

    let functionThree = function ()
    {
        return new Promise(function(resolve,reject){            
            Three();
            resolve();              
        });
    }



function One()
{
    setTimeout(function() {
  console.log(1);
  },3000);

}
function Two()
{

  console.log(2);
}

function Three()
{

  console.log(3);
}

functionOne().then(function(){
    return functionThree();
}).then(function(){
    return functionTwo();
});

我们如何设置这个序列。我哪里出错了。………………………………………………………………………………………………………………………………

4

1 回答 1

1

你不是在等待一个完成

let functionOne = function () { // no need for a new Promise here, since One returns a Promise
    return One();
}
let functionTwo = function () {
    return new Promise(function(resolve,reject){            
        Two();
        resolve();              
    });
}

let functionThree = function () {
    return new Promise(function(resolve,reject){            
        Three();
        resolve();              
    });
}

function One() { // return a Promise to wait for
    return new Promise(function(resolve) {
        setTimeout(function() {
            console.log(1);
            resolve();
        }, 3000);
    });
}

function Two() {
  console.log(2);
}

function Three() {
  console.log(3);
}

functionOne().then(function(){
    return functionThree();
}).then(function(){
    return functionTwo();
});

于 2018-10-19T05:57:47.390 回答