node.js - nodejs - 使用 Promise 终止前一个函数后按顺序调用函数

标签 node.js promise

我尝试按此顺序调用函数call2(),然后调用call3(),以便仅在call2() 终止时调用call3()。我正在使用 Promise 来实现这一目标。

但是 call3() 在 call2() 终止之前被调用。这是我的代码:

function call2() {
    return new Promise(function (resolve, reject) {
        setTimeout(function () {
            console.log("calling 2");
            resolve(true);
        }, 3000);
    });
}

function call3() {
    console.log("calling 3");    
}

call2().then(call3());

我显然做错了什么,或者无法理解如何使用 Promise。请问有什么帮助吗?

最佳答案

then(call3()) 中,您正在调用 call3 函数,而不是将其作为回调传递,请更改为:

call2().then(call3);

function call2() {
   console.log('Start...');
    return new Promise(function (resolve, reject) {
        setTimeout(function () {
            console.log("calling 2");
            resolve(true);
        }, 3000);
    });
}

function call3() {
    console.log("calling 3");    
}

call2().then(call3);

关于node.js - nodejs - 使用 Promise 终止前一个函数后按顺序调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41767611/

相关文章:

Javascript 递归 promise 陷入无限循环

c++ - 何时在 async 或 packaged_task 上使用 promise?

javascript - Node promise 循环等待结果

javascript - 如何将 mocha 测试与 async.series 一起使用

node.js - Node 无法从 Azure 读取环境变量

javascript - 如何将字符串数组保存到 Javascript 中的 JSON 文件?

javascript - 我的 $scope 变量中的元素不会显示

scala - 适合使用 Futures 和 Promises 进行延迟初始化吗?

javascript - promise 在循环内等待

javascript - pretty-print 时避免 Jade 模板输出中标签之间的空格