非阻塞要求在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安装誓言
它工作,我保证;)
- 我应该如何在Javascript中使用node.js和Mongodb实现asynchronousfunction?
- 在客户端JavaScript,如何可以改变我的variables基于环境?
- 在Express.js应用程序中自动添加/重命名文件夹
- 在res.redirect中未定义 – express,request,fs,node-uuid,path和multer
- 铁路由器:meteorJS
- 如何在Multipart superagent请求中发送一个Object和一个附加文件?
- 在内存中编译Webpack,但parsing为磁盘上的node_modules
- 什么是JavaScript中的“导出默认”?
- 不能点击一个divbuttonseleniumwebdriver