我在使用Suspend返回值时遇到一些麻烦。我一直在"未定义" (我能够在函数中使用变量"文件"我只能将它返回):
var fs = require('fs');
var recursive = require('recursive-readdir');
var suspend = require('suspend');
function foo () {}
foo.prototype.readfiles = suspend(function*() {
var files = yield recursive('src', suspend.resume());
return files;
});
foo.prototype.build = function() {
console.log(this.readfiles()); //undefined
return this;
};
new foo()
.build()
提前感谢您的帮助。
答案 0 :(得分:0)
您正确使用挂起,但不能与console.log()一起使用,它将异步触发。 Console.log()不是生成器函数;它不会等待收益率陈述的结果。相反,您需要在yield返回值后显式调用console.log()语句。
以下代码可用于注销您的文件:
var fs = require('fs');
var recursive = require('recursive-readdir');
var suspend = require('suspend');
function foo() {}
foo.prototype.readfiles = suspend(function*() {
var files = yield recursive('src', suspend.resume());
console.log(files) // prints out your files
return files;
});
foo.prototype.build = function() {
// console.log(this.readfiles()); //undefined
// return this;
return this.readfiles();
};
new foo()
.build()