我有一種情況,我正在創建一個節點模塊,只有當異步操作完成時才返回。做到這一點的一種方法(如下所示)是爲module.exports分配一個帶有回調參數的函數。在函數內部,您將返回回調。瞭解module.exports與回調
這裏是什麼,我描述了一個例子,有做是回調:
// module called test.js
module.exports = function(done) {
// do something asynchronous here
process.nextTick(function() {
done(); // call done when the asynchronous thing is complete...
}
}
當我收到掛了,是如何確實執行完成的回調,考慮到我沒有在任何地方定義它...
例如,在香草javascript中,我可以通過完成參數,然後在函數內調用它,只要我在調用中創建回調函數即可。
function testAsyncCb(msg, done) {
console.log(msg);
setTimeout(function() {
done();
}, 1000);
console.log("last line in code");
}
testAsyncCb("testing", function(){ console.log("done"); }); // invocation with callback function
返回的第一個節點例如,某地需要()是()完成,以解決向右創建一個函數調用module.exports?如果不是,回調如何解析?
很難找到關於它如何工作的信息。任何幫助/方向表示讚賞。
我更新的問題更加清晰。使用您的示例,我仍然不確定使用require時定義的回調的位置。所以如果abc = {myFunc:function(done){done(); }}在那裏完成定義? – shai
你確實需要並取回一個功能。你可以調用這個函數。你看到的函數得到一個回調函數,所以只需要用cb作爲arg來調用它,但是仍然是導出本身是同步的,函數被定義並返回同步。如何在獲得後調用函數,取決於您。檢查我原來的帖子中的鏈接。 – sagie
明白了 - 關鍵是像對待你提到的那樣對待require()函數。在更多地解析了一些代碼後,我意識到模塊正在被回調作爲參數調用,就像你在你的評論中提出的那樣require('./ some-module)(function(){}); – shai