首页 > 解决方案 > 如何使用 Promises 顺序调用代码

问题描述

我刚刚开始学习如何使用 Promises,因为到目前为止我一直在尝试回调。我正在尝试下面的代码:它应该调用promise func1,等待1 秒,检查func1 的返回值,然后调用promise func2,等待1 秒,然后检查func2 的返回值。

当我运行它时,我实际上得到了这个输出:

In func1
func1 sent: 1
func2 sent: undefined

所以很明显 func2 没有被调用。

有人可以帮助 Promis 新手进行第一次代码实验吗?谢谢

class A {

    func1(param) {

        return new Promise((resolve, reject) => {
            // Use param...
            console.log("In func1");
            setTimeout(() => resolve("1"), 1000);
        });
    }

    func2(param) {

        return new Promise((resolve, reject) => {
            // Use param...
            console.log("In func2");
            setTimeout(() => resolve("2"), 1000);
        });
    }
}

const a = new A();
a.func1("arg1")
.then((value) => {
    // Check the value of value returned from func1
    console.log("func1 sent: " + value);
}).then((value) => {
    // Check the value of value returned from func2
    console.log("func2 sent: " + value);
});

我的代码基于此。这里没有对第二个函数的显式调用,它可以工作......为什么它不能在解决方案中工作?

new Promise(function(resolve, reject) {
    console.log("In func1");
    setTimeout(() => resolve(1), 1000);

}).then(function(value) {
    console.log("func1 sent: " + value);
    return new Promise((resolve, reject) => {
        console.log("In func2");
        setTimeout(() => resolve(2), 1000);
    });

}).then(function(value) { 
    console.log("func2 sent: " + value);

});

标签: promise

解决方案


推荐阅读