2013-04-03 36 views

回答

1

node-sync模块可以帮助您做到这一点。但请小心,这不是node.js的方式。

0

虽然我不会推荐它,但使用某种忙碌的等待可以轻松完成。例如:

var flag = false; 
asyncFunction(function() { //This is a callback 
    flag = true; 
}) 

while (!flag) {} 

while循环将持续循环,直到执行回调,从而阻止执行。你可以想象这会让你的代码非常混乱,所以如果你打算这么做(我不推荐),你应该使用某种帮助函数来包装你的异步函数;类似于Underscore.js的功能函数,如throttle。您可以通过查看annotated source来查看它们的工作原理。

2

要在“多线程环境”中将异步函数变为同步,我们需要设置一个循环来检查结果,从而导致阻塞。

下面是JS示例代码:

function somethingSync(args){ 
    var ret; //the result-holding variable 
    //doing something async here... 
    somethingAsync(args,function(result){ 
    ret = result; 
    }); 
    while(ret === undefined){} //wait for the result until it's available,cause the blocking 
return ret; 
    } 

OR

synchronize.js也有帮助。