JS:异步函数.then()的函数参数

时间:2019-08-09 20:07:35

标签: javascript node.js promise async-await

当我们有一个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是吗?

换句话说,valuerandom_variable相同吗?

2 个答案:

答案 0 :(得分:3)

The then function接受两个参数:

  1. 承诺兑现后运行的功能
  2. 如果没有兑现承诺则运行的函数

传递给它的第一个函数需要接受一个参数:

  1. 承诺的解决价值

与此同时,async functions返回:

  

一个Promise,它将由async函数返回的值解决,或者被async函数内部抛出的未捕获异常拒绝。


因此,除了将col_names函数与传递的函数混淆之外,还可以:

答案 1 :(得分:1)

当您使用async声明一个函数时,该函数将始终返回一个promise。因此,如果您未从异步函数中显式返回承诺,那么javascript会将您返回的值包装在承诺中。 .then()始终采用一个函数,该函数的参数为​​promise的可解析值。因此,您的代码是正确的编写方式。在您的代码中,value等于random_variable。幕后,javascript从js_function返回了承诺,这就是使用.then((value) =>的原因。

相关问题