当我们有一个async
函数返回一个变量,然后运行.then()
时...
.then()
接受什么作为参数?
是async
返回的变量吗?
例如,考虑以下node.js示例:
const js_package = require('random_js_package');
var random_variable;
let js_function = async () => {
random_variable = js_package();
return random_variable;
}
js_function().then((value) => {
for (var i=0; i<value.length; i++){
console.log(value[i]);
}
});
在这种情况下,value
函数返回的变量.then()
中的变量async
是吗?
换句话说,value
与random_variable
相同吗?
答案 0 :(得分:3)
The then
function接受两个参数:
传递给它的第一个函数需要接受一个参数:
与此同时,async functions返回:
一个Promise,它将由async函数返回的值解决,或者被async函数内部抛出的未捕获异常拒绝。
因此,除了将col_names
函数与传递到的函数混淆之外,还可以:
答案 1 :(得分:1)
当您使用async
声明一个函数时,该函数将始终返回一个promise。因此,如果您未从异步函数中显式返回承诺,那么javascript会将您返回的值包装在承诺中。 .then()
始终采用一个函数,该函数的参数为promise的可解析值。因此,您的代码是正确的编写方式。在您的代码中,value
等于random_variable
。幕后,javascript从js_function
返回了承诺,这就是使用.then((value) =>
的原因。