[英]Return value from node.js fiber future
在下面的代碼中,光纖按預期工作(“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 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')
function sleep(ms) {
var future = new Future
setTimeout(function() {
future.return()
}, ms)
return future
}
var yourFunction = function() {
console.log("1")
sleep(2000).wait()
console.log("2")
return "3"
}
Fiber(function() {
console.log("Temp: " + yourFunction())
}).run()
我建議您在使用Fibers或期貨之前仔細閱讀README文檔 。
這是從節點光纖問題#171中復制的,因為許多人最終會在這里結束。 最初由fresheneesz
撰寫。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.