2017-03-02 71 views
0

我有一个全局变量“结果”,它是一个字符串,它将被运行进程的两个函数使用,并将其输出附加到“结果”变量。 但是,这些函数需要时间来处理并返回结果。以下是代码的当前格式。调用函数按顺序存储结果

var results = 'Results: '; 

router.get('/',function(req,res){ 

    app1.processImage(path, function(err, output){ 
    console.log('app1 processing completed'); 

    results = results+'app1 result:' + output; 
    }); 

    app2.processImage(path, function(err, output){ 
    console.log('app2 processing completed'); 

    results = results+'app2 result:' + output; 
    }); 

console.log('Both processes are completed'); 

console.log(results);// none of the results printed. 

}); 

当我尝试打印结果时,它还没有输出。 程序产生这样

电流输出输出:

Both the processes are completed 

Results: 

app2 processing completed 

app1 processing completed 

预期输出:

app1 process completed 

app2 process completed 

Both the processes are completed 

Results: app1 result : true , app2 result:true 

注意,电流输出结果是空的,因为功能被尚未处理。我怎样才能得到正确存储在变量中的结果?

+0

可能重复[如何从异步调用返回响应?](http://stackoverflow.com/questions/ 14220321 /如何-DO-I-返回的响应,从-的异步调用) –

回答

0

这是一个竞赛条件。你应该看看使用承诺。有了承诺,您将能够让您的脚本在执行下一个项目之前等待使用.then().done()