gpt4 book ai didi

javascript - 从 node.js 纤维 future 返回值

转载 作者:搜寻专家 更新时间:2023-11-01 00:08:22 25 4
gpt4 key购买 nike

在下面的代码中,光纤按预期工作(“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 不是一个函数,它是一个 fiber 实例,而 fiber 实例不返回任何东西。此外,您不应该直接使用 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()

我建议您阅读 README documentation在认真使用 Fibers 或 future 之前彻底了解。


这是从 node-fibers issue #171 复制的因为很多人最终来到这里。最初由 fresheneesz 撰写。

关于javascript - 从 node.js 纤维 future 返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23114461/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com