节点原型和asynchronous

当我调用log()时,如何在read()中返回asynchronous函数的值? 我知道代码可能不是100%正确的,但我希望你能明白。 我谷歌search,但仍然有点困惑。 希望有人能帮助我。

function Whatever(directory) { this.source = 'someDir'; } Whatever.prototype.read = function (dir) { dir = dir || this.source; recursive(dir, ['.*'], function (err, files) { if (err) throw err; return files; }); }; Whatever.prototype.log = function() { console.log(this.read()); }; 

你可以添加一个callback函数,就像recursion函数一样,例如:

 Whatever.prototype.read = function (dir, callback) { dir = dir || this.source; recursive(dir, ['.*'], callback); }; 

然后你把你的错误检查和用法在你的日志function:

 Whatever.prototype.log = function() { this.read(function(err, files){ if(err){ throw err; } console.log(files); }); }; 

有很多链接在线解释callback更详细的,你应该调查。 但是,一旦你掌握了这些,我build议阅读有关承诺,因为他们处理得好得多。