Javascript NodeJS-使用--跟踪同步io“;获得;警告:检测到使用同步API“;

Javascript NodeJS-使用--跟踪同步io“;获得;警告:检测到使用同步API“;,javascript,node.js,Javascript,Node.js,背景:我正在尝试创建一个完全异步节点js演示的小测试。 然后我可以看到一个好的示例是什么样子,以便清理我所做的其他一些项目 这是我的密码 //https://medium.com/@Tksharma/writing-neat-asynchronous-node-js-code-with-promises-async-await-fa8d8b0bcd7c 函数DoubleAfter2秒(x){ 返回新承诺(解决=>{ 设置超时(()=>{ 决议(x*2); }, 500); }); } 函数ad

背景:我正在尝试创建一个完全异步节点js演示的小测试。 然后我可以看到一个好的示例是什么样子,以便清理我所做的其他一些项目

这是我的密码

//https://medium.com/@Tksharma/writing-neat-asynchronous-node-js-code-with-promises-async-await-fa8d8b0bcd7c
函数DoubleAfter2秒(x){
返回新承诺(解决=>{
设置超时(()=>{
决议(x*2);
}, 500);
});
}
函数addPromise(x){
返回新承诺(解决=>{
双倍2秒后(10)。然后((a)=>{
两倍后2秒(20)。然后((b)=>{
两次两秒后(30)。然后((c)=>{
解析(x+a+b+c);
})
})
})
});
}
加上承诺(10)。然后((总和)=>{
控制台日志(总和);
});
  • 这是什么意思检测到使用同步API
  • 跟踪同步io
    检测对节点同步API的调用,如
    fs.readFileSync
    。所以这些警告就是你想要抓住的

    为了执行代码,节点必须同步加载文件。当您
    需要
    文件时,也会发生同样的情况。因此,预计您会收到很多类似这样的警告:

    (节点:29884)警告:在realpathSync(fs.js:1437:13)上检测到使用了同步API

    您可以使用一个空文件进行尝试,您将看到相同的警告:
    node--trace sync io empty file.js

  • 我的演示不是完全异步的吗
  • 您的演示完全异步,因为它不调用任何同步API

  • 这是什么意思检测到使用同步API
  • 跟踪同步io
    检测对节点同步API的调用,如
    fs.readFileSync
    。所以这些警告就是你想要抓住的

    为了执行代码,节点必须同步加载文件。当您
    需要
    文件时,也会发生同样的情况。因此,预计您会收到很多类似这样的警告:

    (节点:29884)警告:在realpathSync(fs.js:1437:13)上检测到使用了同步API

    您可以使用一个空文件进行尝试,您将看到相同的警告:
    node--trace sync io empty file.js

  • 我的演示不是完全异步的吗

  • 您的演示是完全异步的,因为它不调用任何同步API

    谢谢Juan,我认为我在寻找错误的东西,我在尝试查找阻塞代码,跟踪同步io是最好的解决方案吗?您可以使用以下库:。在这种情况下,应该将函数调用封装在
    setImmediate
    中,如下所示:
    setImmediate(()=>addPromise(10).then(console.log))谢谢你,胡安,我想我找错地方了,我正在寻找阻塞代码,跟踪同步io是最好的解决方案吗?你可以使用这样的库。在这种情况下,应该将函数调用封装在
    setImmediate
    中,如下所示:
    setImmediate(()=>addPromise(10).then(console.log))