寻找这个例子(用我以前的知识在事件驱动中)。我可以说,这两个例程独立地和并行地运行(所以不会阻止洞程序)。
//....declaration and methods
register_1.on("execut_routine _1", function() { console.log("executed the routine 1"):})
register_2.on("execut_routine _2", function() { console.log("executed the routine 2"):})但如果我做这个改变:
//....declaration and methods
register_1.on("execut_routine _1", function() { /*Long Blocking Operation*/})
register_2.on("execut_routine _2", function() { /*Long Blocking Operation*/})第一次触发的事件会阻止第二次的发生,对吗?如果是这样,我如何才能扭转这种影响?
发布于 2015-12-09 17:52:26
Javascript是一个单线程环境,所以除非您正在执行与输入/输出相关的任务(等待文件系统、调用外部资源等),否则您的代码必须等待其他代码完成。
使用事件驱动的编程样式无助于解决这个问题。
但是,您可以告诉您的代码进入某种“睡眠”模式,它等待其他代码执行,然后在事件循环的下一个滴答处再次开始。例如,Node.js使用process.nextTick(fn)注册应该在多个滴答上执行的代码。
发布于 2015-12-09 17:52:33
Javascript通常不是多线程环境,因此即使在您的第一个示例中,实际情况是它们是串行执行而不是并行执行。它的运行方式类似于XHR的并行运行,但它们作为浏览器的函数运行,而不是Javascript直接运行(即网络请求并行运行),但是javascript处理程序总是会连续地触发。
https://stackoverflow.com/questions/34185575
复制相似问题