Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Promise.all不显示数据_Javascript_Node.js_Promise_Ecmascript 6_Es6 Promise - Fatal编程技术网

Javascript Promise.all不显示数据

Javascript Promise.all不显示数据,javascript,node.js,promise,ecmascript-6,es6-promise,Javascript,Node.js,Promise,Ecmascript 6,Es6 Promise,我不熟悉Promissions,我希望将类中的数据作为Promissions返回。我有两个类,每个类中有两个函数。我所做的每一个函数都是从一个类返回一个承诺,但我无法执行promise.all。下面是代码 Class1 class TestClass { firstPromise() { return new Promise((resolve, reject) => { resolve('return first promise')

我不熟悉Promissions,我希望将类中的数据作为Promissions返回。我有两个类,每个类中有两个函数。我所做的每一个函数都是从一个类返回一个承诺,但我无法执行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)
    });
它显示
[undefined,undefined]

执行
Promise.all()
时,承诺尚未解析,因此
testParam
testParam1
未定义的。我认为您应该将第一个承诺分配给
testParam1

testParam1 = test1Object.firstPromise().then(data => test1Object.secondPromise());
类似地,
testParam
的第二个:

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

Promise.all
接受一个承诺数组,而不是一个“变量”数组,将来某个承诺回调将用一个值填充该数组。