簡體   English   中英

node.js中的非阻塞需求

[英]non-blocking require in node.js

有沒有一種方法可以在運行時(服務時間)在服務器上使用require (或其他等效的東西)而不會阻塞整個事情?

我正在嘗試添加用戶定義的功能,之后他可以使用我正在實現的語言來使用它們。

因此,例如:

toaprse.mylanguage

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

我可以做一個簡單的require('somefunction'); 但我不想阻止節點,據我所知是這種情況。

我只是想通過函數到我的框架,它並沒有被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)
})

看一下Promises模式。 使用Promises,您可以將異步操作的執行委派給某個方法,該方法將在發生錯誤或成功執行給定操作后回調您。

以下是一些實現此模式的節點模塊:

它有效,我保證;)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM