承诺后返回值
我有一个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 });
(虽然这有点多余,但我确定你的实际代码更复杂)