Javascript node.js的返回值
在以下代码中,光纤按预期工作(“1”和“2”相隔2秒打印)。但是,我想从fiberFunction返回“3”,并同步打印它。但这不起作用。以下是输出:Javascript node.js的返回值,javascript,node.js,future,synchronous,node-fibers,Javascript,Node.js,Future,Synchronous,Node Fibers,在以下代码中,光纤按预期工作(“1”和“2”相隔2秒打印)。但是,我想从fiberFunction返回“3”,并同步打印它。但这不起作用。以下是输出: 1 Temp: undefined 2 有人知道如何从光纤函数返回值吗 var Fiber = require('fibers'); var Future = require('fibers/future'), wait = Future.wait; function sleep(ms) { var future = new Futu
1
Temp: undefined
2
有人知道如何从光纤函数返回值吗
var Fiber = require('fibers');
var Future = require('fibers/future'), wait = Future.wait;
function sleep(ms) {
var future = new Future;
setTimeout(function() {
future.return();
}, ms);
return future;
}
var fiberFunction = Fiber(function() {
console.log("1");
sleep(2000).wait();
console.log("2");
return "3";
});
var fiberReturn = fiberFunction.run();
console.log("Temp: " + fiberReturn);
所以您的问题是,
fiberFunction
不是一个函数,它是一个光纤实例,光纤实例不返回任何内容。另外,您不应该直接使用Future.wait-您应该只等待实例
您应该这样做:
var-Fiber=require('fibers'))
var Future=require('fibers/Future')
功能睡眠(ms){
var future=新未来
setTimeout(函数(){
future.return()
},ms)
回归未来
}
var yourFunction=function(){
控制台日志(“1”)
睡眠(2000)。等待()
控制台日志(“2”)
返回“3”
}
光纤(函数(){
log(“Temp:+yourFunction())
}).run()
我建议你在认真使用纤维或期货之前,仔细阅读本手册
这是复制自,因为许多人最终来到这里。最初由
freshneesz
编写