【问题标题】:Promise.all is not displaying the dataPromise.all 不显示数据
【发布时间】:2016-12-17 10:19:28
【问题描述】:

我是 Promise 的新手,我想从类中返回数据作为 Promise。我有两个班级,每个班级有两个功能。我正在做的每个函数都是从一个类返回一个承诺,但我无法执行 promise.all。下面是代码

Class1

class TestClass {

    firstPromise() {
        return new Promise((resolve, reject) => {
            resolve('return first promise')
        })
    }

    secondPromise() {
        return new Promise((resolve, reject) => {
            resolve('return second promise')
        })
    }
}
module.exports.TestClass = TestClass;

Class2

class TestClass1 {

    firstPromise() {
        return new Promise((resolve, reject) => {
            resolve('return first promise')
        })
    }

    secondPromise() {
        return new Promise((resolve, reject) => {
            resolve('return second promise')
        })
    }
}
module.exports.TestClass1 = TestClass1;

Main function
    let data = req.body;
    let test1Object;
    let testObject;
    let testParam;
    let testParam1;
    if (data.hasOwnProperty('param1')) {
        test1Object = new test1.TestClass1();
        test1Object.firstPromise().then((data)=>{
            testParam1 = test1Object.secondPromise();
        });
    }
    if (data.hasOwnProperty('param2')) {
        testObject = new test.TestClass();
        testObject.firstPromise().then((data)=>{
            testParam = testObject.secondPromise()
        });
    }
    Promise.all([testParam,testParam1]).then((data)=>{
       console.log(data)
    });

它显示 [未定义,未定义]

【问题讨论】:

  • Promise.all 接受一个承诺数组,而不是一个“变量”数组,这些“变量”将在未来被某个承诺回调填充一个值。

标签: javascript node.js promise ecmascript-6 es6-promise


【解决方案1】:

当你执行Promise.all() 时,promise 还没有解决,所以testParamtestParam1undefined。我认为您应该将第一个承诺分配给testParam1

testParam1 = test1Object.firstPromise().then(data => test1Object.secondPromise());

第二个类似testParam:

testParam = testObject.firstPromise().then(data => testObject.secondPromise());

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-19
    • 2021-02-01
    • 1970-01-01
    • 2016-08-29
    相关资源
    最近更新 更多