gpt4 book ai didi

javascript - NodeJS - 使用 "--trace-sync-io"得到 "WARNING: Detected use of sync API"

转载 作者:行者123 更新时间:2023-11-30 14:03:44 26 4
gpt4 key购买 nike

背景:我正在尝试创建一个完全异步 Node 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 调试控制台中。

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. 我的演示不是完全异步的吗?

最佳答案

  1. What does this mean? Detected use of sync API

trace-sync-io 检测对 Node 同步 API 的调用,例如 fs.readFileSync。所以这些警告就是您要捕获的内容

为了执行您的代码,Node 必须同步加载您的文件。当您 require 一个文件时,也会发生同样的事情。因此,预计您会收到很多这样的警告:

(node:29884) 警告:在 realpathSync (fs.js:1437:13) 检测到同步 API 的使用

你可以用一个空文件试试,你会看到同样的警告:node --trace-sync-io empty-file.js

  1. Is my Demo not fully async?

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

关于javascript - NodeJS - 使用 "--trace-sync-io"得到 "WARNING: Detected use of sync API",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55853191/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com