公开当前正在执行的承诺的ID

时间:2017-01-11 01:36:59

标签: javascript node.js

我正在使用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是没用的。

1 个答案:

答案 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