不能使第二个承诺在nodejs中运行?

时间:2017-04-25 05:12:05

标签: node.js server promise

我计划使用promise来解决应用程序中的一些异步问题。在这两个承诺中我都有一些耗时的工作要做。简化的代码是这样的:

let connectServer = function () {
return new Promise(function (resolve, reject){
                    setTimeout(function (){
                        console.log("this is the 1st promise done!");
                    },50);
                    });      } 

let connectFrontend = function (){
return new Promise(function (resolve, reject){
                    setTimeout(function (){
                        console.log("this is the 2nd promise done!");
                    },50);
                     });     }    

connectServer().then(function (){
return connectFrontend();
}).then(function (){
console.log("finished coonectServer and returned the results to the frontend!");
}).catch(function () {
console.log("something wrong!")});

我的目的是运行第一个承诺然后运行第二个(因为第二个需要使用第一个的一些结果)。在这里它应该打印出“这是第一个承诺!”,“这是第二个承诺!”。

当我运行这个测试简化代码时,它只打印“完成第一个承诺!”然后在控制台等待......没有很长时间,直到我必须使用ctrl + c回到正常的控制台/终端。意味着不履行第二个承诺。

我在这里做错了什么?

1 个答案:

答案 0 :(得分:1)

你没有解决第一和第二承诺: -

就这样做 - >

let connectServer = function() {
    return new Promise(function(resolve, reject) {
        setTimeout(function() {
            console.log("this is the 1st promise done!");
            resolve("Result From 1st Promise");
        }, 50);
    });      
};

let connectFrontend = function(from_1st) {
    return new Promise(function(resolve, reject) {
        console.log(from_1st);
        setTimeout(function() {
            console.log("this is the 2nd promise done!");
            resolve("Result From 2nd Promise");
        }, 50);
    });
};   

connectServer().then(function(result) {
    return connectFrontend(result);
}).then(function(from_2nd) {
    console.log(from_2nd);
    console.log("finished coonectServer and returned the results to the frontend!");
}).catch(function() {
    console.log("something wrong!");
});