Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/429.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript node.js的返回值_Javascript_Node.js_Future_Synchronous_Node Fibers - Fatal编程技术网

Javascript node.js的返回值

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”和“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')
功能睡眠(ms){
var future=新未来
setTimeout(函数(){
future.return()
},ms)
回归未来
}
var yourFunction=function(){
控制台日志(“1”)
睡眠(2000)。等待()
控制台日志(“2”)
返回“3”
}
光纤(函数(){
log(“Temp:+yourFunction())
}).run()
我建议你在认真使用纤维或期货之前,仔细阅读本手册


这是复制自,因为许多人最终来到这里。最初由
freshneesz
编写