NodeJS-使用“ --trace-sync-io”获取“警告:检测到使用同步API”

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


这是我的代码


//https://medium.com/@tkssharma/writing-neat-asynchronous-node-js-code-with-promises-async-await-fa8d8b0bcd7c

function doubleAfter2Seconds(x) {

  return new Promise(resolve => {

    setTimeout(() => {

      resolve(x * 2);

    }, 500);

  });

}


function addPromise(x){

  return new Promise(resolve => {

    doubleAfter2Seconds(10).then((a) => {

      doubleAfter2Seconds(20).then((b) => {

        doubleAfter2Seconds(30).then((c) => {

          resolve(x + a + b + c);

        })

      })

    })

  });

}


addPromise(10).then((sum) => {

  console.log(sum);

});

我收到的第一个(很多!)警告是在Node Debug Console中的此警告。


Debugger attached.

(node:29884) WARNING: Detected use of sync API


at realpathSync (fs.js:1437:13)

at toRealPath (internal/modules/cjs/loader.js:205:13)

at Module._findPath (internal/modules/cjs/loader.js:287:22)

at Module._resolveFilename (internal/modules/cjs/loader.js:600:25)

at Module._load (internal/modules/cjs/loader.js:529:25)

at Module.runMain (internal/modules/cjs/loader.js:775:12)

at startup (internal/bootstrap/node.js:300:19)

我的问题是: -

  1. 这是什么意思?检测到使用同步API

  2. 我的演示不是完全异步的吗?


30秒到达战场
浏览 121回答 1
1回答

慕丝7291255

这是什么意思?检测到使用同步APItrace-sync-io检测对Node同步API的调用,例如fs.readFileSync。这些警告就是您要抓住的为了执行您的代码,Node必须同步加载文件。当您require归档文件时,也会发生同样的事情。因此,预计您会有很多这样的警告:(node:29884) WARNING: Detected use of sync API at realpathSync (fs.js:1437:13)您可以尝试使用一个空文件,然后看到相同的警告: node --trace-sync-io empty-file.js我的演示不是完全异步的吗?您的演示程序完全不同步,因为它没有调用任何同步API
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript