2016-12-17 47 views
-1

我是承诺的新手,我想从类返回数据作为承诺。我有两个类,每个类都有两个函数。我正在做的每个函数都是从类中返回一个承诺,但我无法执行promise.all。下面是代码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) 
    }); 

它显示 [不确定的,不确定]

+0

'Promise.all'需要承诺的阵列,而不是“变量”的数组将来会被一些承诺回调所填充。 – Bergi

回答

2

当你执行Promise.all(),承诺尚未解决,所以testParamtestParam1undefined。我想你应该将第一个承诺testParam1

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

,同样在第二到testParam

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