非阻塞要求在node.js中

有没有办法在运行时(服务时间)在服务器上使用require (或其他相同的东西),而不会阻塞整个事情?

我试图添加用户定义的函数,之后他可以用我正在执行的语言来使用它们。

所以,例如:

toaprse.mylanguage

 #bind somefunctions.js x = somefunctions.func1(); 

我可以做一个简单的要求('somefunction'); 但我不想阻止节点,我明白是这样的。

我只是想将function传递给我的框架,它不必require但似乎很自然。

这是如何实施的要求:

 > console.log(require.extensions['.js'].toString()) function (module, filename) { var content = NativeModule.require('fs').readFileSync(filename, 'utf8'); module._compile(stripBOM(content), filename); } 

你可以在你的应用程序中做同样的事情。 我猜这样的事情会工作:

 var fs = require('fs') require.async = function(filename, callback) { fs.readFile(filename, 'utf8', function(err, content) { if (err) return callback(err) module._compile(content, filename) // this require call won't block anything because of caching callback(null, require(filename)) }) } require.async('./test.js', function(err, module) { console.log(module) }) 

看看承诺模式。 使用Promise,你可以把一个asynchronous操作的执行委托给一个方法,该方法会在错误的情况下或者在成功执行给定的操作之后callback。

下面是一些实现这种模式的节点模块:

  • npm安装诺言
  • npm安装q
  • npm安装的时候
  • npm安装rsvp
  • npm安装誓言

它工作,我保证;)