承诺后返回值

我有一个JavaScript函数,我想返回返回方法后得到的值。 比解释更容易看

function getValue(file){ var val; lookupValue(file).then(function(res){ val = res.val; } return val; } 

用诺言来做这件事的最好方法是什么? 据我了解, return val将返回之前lookupValue已经完成了,但我不能return res.val ,因为它只是从内部函数返回。

这样做的最好方法就是像这样使用promise函数

 lookupValue(file).then(function(res) { // Write the code which depends on the `res.val`, here }); 

调用asynchronous函数的函数不能等到asynchronous函数返回一个值。 因为它只是调用asynchronous函数并执行其余的代码。 所以,当一个asynchronous函数返回一个值时,它将不会被调用它的同一个函数接收。

所以,一般的想法是在asynchronous函数本身中编写依赖于asynchronous函数的返回值的代码。

沿着这些线使用一个模式:

 function getValue(file) { return lookupValue(file); } getValue('myFile.txt').then(function(res) { // do whatever with res here }); 

(虽然这有点多余,但我确定你的实际代码更复杂)