简体   繁体   English

Promise.all没有显示数据

[英]Promise.all is not displaying the data

I am new to promises and I want to return the data from classes as promises. 我对Promise是陌生的,我想将来自类的数据作为Promise返回。 I have two classes with two function in each class. 我有两个班,每个班有两个功能。 What I am doing each function is returning a promise from a class, but I am unable to execute promise.all. 我正在做的每个功能都从类返回一个promise,但是我无法执行promise.all。 Below is the code 下面是代码

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)
    });

it displays [ undefined, undefined ] 它显示[undefined,undefined]

When you're executing Promise.all() , the promises are not yet resolved, so testParam and testParam1 are undefined . 当您执行Promise.all() ,承诺尚未解决,因此testParamtestParam1undefined I think you should assign the first promise to testParam1 : 我认为您应该将第一个承诺分配给testParam1

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

and similarly the second to testParam : 同样是testParam的第二个:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM