Javascript node.js中的异步同步问题
因此,我在Node.js中启动了一个小项目来了解它。它是ArchLinux包系统的一个简单缓存代理,因为node提供了大部分繁重的工作 这有两个“主要”阶段,服务器设置和服务。 然后服务有两个主要阶段,响应设置和响应 “主”设置包括检查一些文件,从文件加载一些配置。从web地址加载一些json。然后使用此信息启动http服务器和代理实例Javascript node.js中的异步同步问题,javascript,node.js,asynchronous,Javascript,Node.js,Asynchronous,因此,我在Node.js中启动了一个小项目来了解它。它是ArchLinux包系统的一个简单缓存代理,因为node提供了大部分繁重的工作 这有两个“主要”阶段,服务器设置和服务。 然后服务有两个主要阶段,响应设置和响应 “主”设置包括检查一些文件,从文件加载一些配置。从web地址加载一些json。然后使用此信息启动http服务器和代理实例 设置记录器/选项-读取配置-读取镜像-读取webmirror 开始发球 服务包括检查请求以查看文件是否存在,如果需要,创建目录,然后提供响应 检查请求-检
- 设置记录器/选项-读取配置-读取镜像-读取webmirror
- 开始发球
- 检查请求-检查目录-检查文件
- 代理请求或服务文件
// wait for "test" to be true, execute "run",
// bail after "count" tries, waiting "sleep" ms between tries;
function waiter( test, run, count, sleep, message ) {
var i=0;
async.until(
function () {
if ( i > count ) { return true; }
logger.debug('waiting for',message, test() );
return test();
},
function (callback) {
i++;
setTimeout(callback, sleep );
},
function (err) {
if ( i > count ) {
logger.error('timeout for', message, count*sleep );
return;
}
run()
}
);
}
它给我的印象是相当大和丑陋,需要一个模块来实现一些我认为是标准的东西,所以我想知道什么是更好的方法。我是否仍在以非异步方式思考?节点中是否有我忽略的简单内容?有没有一个标准的方法可以做到这一点
我想象在这个设置中,如果程序变得复杂,将会有很多嵌套函数来描述程序的流程,我正在努力寻找一个好的方法来展示它
任何提示都将不胜感激 你不可能让所有事情都同步。Nodejs被设计为异步执行(这当然有时会折磨您)。但有几种方法和技术可以使其以同步方式工作(前提是伪代码经过深思熟虑,代码经过精心设计):
- 使用回调
- 使用事件
- 使用承诺