我有一个javascript函数,我想在返回方法后返回我得到的值。 比解释更容易看到
function getValue(file){
var val;
lookupValue(file).then(function(res){
val = res.val;
}
return val;
}
承诺的最佳方法是什么?据我了解,return val
将在lookupValue完成之前返回,但是我不能return res.val
,因为它只是从内部函数返回。
答案 0 :(得分:16)
沿着这些方向使用模式:
function getValue(file) {
return lookupValue(file);
}
getValue('myFile.txt').then(function(res) {
// do whatever with res here
});
(虽然这有点多余,但我确定你的实际代码更复杂)
答案 1 :(得分:15)
执行此操作的最佳方法是使用promise returns函数,就像这样
lookupValue(file).then(function(res) {
// Write the code which depends on the `res.val`, here
});
调用异步函数的函数不能等到异步函数返回一个值。因为,它只调用异步函数并执行其中的其余代码。因此,当异步函数返回一个值时,它将不会被调用它的同一函数接收。
因此,一般的想法是在async函数本身中编写依赖于async函数返回值的代码。