Promise后的返回值

IT技术 javascript node.js promise q
2021-01-17 06:42:12

我有一个 javascript 函数,我想在其中返回返回方法后获得的值。看比解释容易

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

用Promise来做到这一点的最佳方法是什么。据我了解,return val将在 lookupValue 完成之前返回,但我不能,return res.val因为那只是从内部函数返回。

2个回答

沿着这些路线使用模式:

function getValue(file) {
  return lookupValue(file);
}

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

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

你能举个例子lookupValue吗?
2021-03-28 06:42:12

最好的方法是使用 promise 返回函数,就像这样

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

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

因此,一般的想法是在异步函数本身中编写依赖于异步函数返回值的代码。

你没有错,但是你的解决方案违反了封装原则。调用 getValue(...) 的对象或函数不应该知道也不应该知道函数 lookupValue(...)。这样,如果 getValue(...) 中的确切过程发生更改,则不需要更新依赖于它的函数。
2021-03-24 06:42:12