我正在使用Node 6.9中的本机promises编写异步代码。在旧承诺完成之前,我注意到一个新的承诺正在解雇的竞争条件。
我正在打印调试,这很难阅读,因为一个promise的输出与另一个的交错。有一种“id”有助于识别当前正在执行的功能。
例如:
function doWork() {
new Promise((resolve, reject) => {
console.log("queue ID", someId())
// long-running processing happens
})
}
doWork()
-> queue ID 1
doWork()
-> queue ID 2
注意:我不是在寻找process.id 。据我所知,节点在一个进程中运行,并且异步I / O在其中发生,因此打印出process.id是没用的。
答案 0 :(得分:0)
没有promise id这样的东西,你可以做的是使用一个命名函数并将其预先挂起到你的控制台日志,或者你可以使用闭包来保持对表示id的任意整数或字符串的引用。 / p>
function doWork(someId) {
new Promise((resolve, reject) => {
console.log("queue ID", someId);
// long-running processing happens
})
}
doWork(10)
-> queue ID 10
doWork(20)
-> queue ID 20