我计划使用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回到正常的控制台/终端。意味着不履行第二个承诺。
我在这里做错了什么?
答案 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!");
});