node.js将事件放在另一个事件之后
假设我有两个异步事件,都需要进行远程交换的i / o。
placeOrder()
cancelOrder()
两个事件都以异步方式触发,这意味着可以在placeOrder返回之前调用cancelOrder。棘手的部分是我需要placeOrder首先返回一个订单ID,否则无法调用cancelOrder,所以我需要一些方法来阻止cancelOrder事件,直到placeOrder返回,并且阻塞不能太长,否则订单可能被执行,所以循环/超时/频繁检查在这里不起作用。
任何的想法?
回答如下:你会使用Promise。如果你的函数已经返回一个promise,你可以使用then()
简单地链接这两个函数
placeOrder().then(val => cancelOrder(val));
如果他们不这样做,你可以把它们放在new Promise
里面
function foo() {
return new Promise((resolve, reject) => {
// do stuff
resolve('<result of placeOrder here>');
});
}
function bar(val) {
return new Promise((resolve, reject) => {
// do stuff
resolve('whatever')
})
}
and call
foo()
.then(value => bar(value))
.then(console.log);