簡體   English   中英

從node.js光纖未來返回值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM