2017-03-08 60 views
0

我需要獲得承諾之外的結果。這是我的代碼。如何在節點js中獲得承諾外的結果

var NotList = share.getNotification(); 
Promise.all([NotList]).then(function(not_list) { 
var report_list = not_list[0]; 
for (var n = 0; n < report_list.length; n++) { 
    var time_d = report_list[n].time; 
    var not_id = report_list[n]._id; 
    var PlantData = plant_details(report_list[n].plant_id); 
     Promise.all([PlantData, not_id]).then(function(result_arr) {      
     var plant_d = result_arr[0]; 
     return notification_arr.push({notification_id: result_arr[1], parameter_name: "op_conductivity_val", plant_title: plant_d.title, message: "Plant output conductivity is low", notification_class: "danger", time: time_d}); 

      }); 

     } 

    }); 
    console.log(notification_arr); 

但是我得到一個空數組。請幫助某人解決此問題。

回答

2

你不行。你只能返回保存您的數據的承諾:

var NotList = share.getNotification(); 
    var notification_arrPromise = new Promise(resolve => { 

    Promise.all([NotList]).then(function(not_list) { 
     var report_list = not_list[0]; 
     var count = 0; 
     for (var n = 0; n < report_list.length; n++) { 
      var time_d = report_list[n].time; 
      var not_id = report_list[n]._id; 
      var PlantData = plant_details(report_list[n].plant_id); 
      Promise.all([PlantData, not_id]).then(function(result_arr) {      
       var plant_d = result_arr[0]; 
       count++; 
       if(count === report_list.length){ 
        resolve (notification_arr.push({notification_id: result_arr[1], parameter_name: "op_conductivity_val", plant_title: plant_d.title, message: "Plant output conductivity is low", notification_class: "danger", time: time_d})); 
       } 

     }); 

     } 

    }); 
}); 


notification_arrPromise.then(function(notification_arr){ 
    console.log(notification_arr); 
}); 
+0

sorry.not工作 –

+0

@SoumyaSarasan看到更新,對不起,我沒那你嵌套了承諾。 –

+0

@SoumyaSarasan等待 –