Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何在nodejs中编写同步代码?_Node.js - Fatal编程技术网

Node.js 如何在nodejs中编写同步代码?

Node.js 如何在nodejs中编写同步代码?,node.js,Node.js,我知道这是一种不好的做法,但知道如何处理某些案件会有所帮助 在我的例子中,我试图创建一些文件,然后读取它们。我想知道在我尝试读取它们的包含目录之前,如何等待创建完成,而不使用setTimeout和条件?您可以使用async wait或promise来完成它 例如:- async function f() { return 1; } 您可以在其中传递您的方法。它将等待您的响应很多NodeJS函数都有同步对应项,您应该寻找它们 请参阅上的文件系统文档。 对“sync”进行页面搜索,您可以看到它

我知道这是一种不好的做法,但知道如何处理某些案件会有所帮助


在我的例子中,我试图创建一些文件,然后读取它们。我想知道在我尝试读取它们的包含目录之前,如何等待创建完成,而不使用
setTimeout
和条件?

您可以使用async wait或promise来完成它

例如:-

async function f() {
  return 1;
}

您可以在其中传递您的方法。它将等待您的响应

很多NodeJS函数都有同步对应项,您应该寻找它们

请参阅上的文件系统文档。 对“sync”进行页面搜索,您可以看到它提供了许多同步功能

不仅仅是
文件系统
提供了这一点。
Child\u进程
也执行相同的操作,请参见示例

如果您找不到所需函数的本机同步版本,npm注册表是一个很好的地方,很多时候您可以在那里找到同步包

祝你好运


p、 在NodeJS中编写同步代码并不总是不好的做法,例如,许多CLI工具都是同步的。

您使用的是什么操作系统?是Microsoft的Windows吗?是的,相关吗?您是说您正在创建文件,然后查看它们是否存在,并且存在竞争条件,因此它们可能还不存在?这是不是因为您在两个同步线程/co例程中执行此操作?请为问题添加详细信息。在我的例子中,我正在读取base64数据,对其进行解码,使用这些数据创建文件,并尝试在创建后读取这些文件,因为创建需要一些时间fs.readdirsync正在读取一个空文件夹,任何技巧都会非常有用我已经尝试过承诺,co,async和更多在Promiss中使用
fs.writeFileSync()
fs.readFileSync()
通常,如果我的条件类似于if(fs.readdirsync(directory)==DataFiles.length){resolve},则必须指定何时解析,何时拒绝它永远不会进入它,因为目录仍然是空的。我认为OP需要一个更好的例子。他们尝试过承诺。你能告诉他们怎么做吗。(我不使用node.js,因此无法正确使用它。)