【发布时间】:2015-07-27 22:18:07
【问题描述】:
我正在尝试链接承诺,但第二个没有调用 resolve 函数。我做错了什么?
function getCustomers(){
let promise = new Promise((resolve, reject) => {
console.log("Getting customers");
// Emulate an async server call here
setTimeout(() => {
var success = true;
if (success) {
resolve( "John Smith"); // got the customer
} else {
reject("Can't get customers");
}
}, 1000);
}
);
return promise;
}
function getOrders(customer) {
let promise = new Promise((resolve, reject) => {
console.log("Getting orders");
// Emulate an async server call here
setTimeout(() => {
var success = true;
if (success) {
resolve("Order 123"); // got the order
} else {
reject("Can't get orders");
}
}, 1000);
}
);
return promise;
}
getCustomers()
.then((cust) => getOrders(cust))
.catch((err) => console.log(err));
console.log("Chained getCustomers and getOrders. Waiting for results");
代码从第二个函数打印“Getting orders”,但不打印“Order 123”:
获得客户 链式 getCustomers 和 getOrders。等待结果 接单
更新。我想在控制台上的返回承诺的链式方法之间插入打印。我想这样的事情是不可能的:
getCustomers()
.then((cust) => console.log(cust)) //Can't print between chained promises?
.then((cust) => getOrders(cust))
.then((order) => console.log(order))
.catch((err) => console.error(err));
【问题讨论】:
标签: promise ecmascript-6 es6-promise