2017-10-16 29 views
5

मैं ionViewCanLeave() navGuard का उपयोग करता है एक पुष्टिकरण संदेश को दिखाने के लिए एक ईओण 2 एप्लिकेशन की है। यह ठीक काम करता है; उपयोगकर्ता को एक पुष्टिकरण संवाद दिखाया गया है और यदि वे चाहते हैं तो छोड़ने का विकल्प चुन सकते हैं। यहाँ इसके लिए कोड है:मैं घोंसला 2 वादों और कैसे ionViewCanLeave परिणाम के लिए प्रतीक्षा कर सकते हैं?

// About to leave 
    ionViewCanLeave() { 
    if(!this.allowedToLeave) { 
     return new Promise((resolve, reject) => { 
     let confirm = this.alertCtrl.create({ 
      title: 'Are you sure?', 
      message: 'Are you sure?', 
      buttons: [{ 
      text: 'OK', 
      handler:() => { 
       this.allowedToLeave = true; 
       resolve(); 
      }, 
      }, { 
      text: 'Cancel', 
      handler:() => { 
       reject(); 
      } 
      }], 
     }); 
     confirm.present(); 
     }); 
    } 
    } 

मैं अब storage से यहां एक अतिरिक्त चर की जाँच करने की जरूरत है। उस चर को प्राप्त करने के लिए मुझे एक वादा की आवश्यकता है।

// About to leave 
    ionViewCanLeave() { 
    this.storage.get('safe_to_leave').then((val) => { 
     this.safeToLeave = val; 

     if(!this.allowedToLeave && !this.safeToLeave) { 
     return new Promise((resolve, reject) => { 
      let confirm = this.alertCtrl.create({ 
      title: 'Are you sure?', 
      message: 'Are you sure?', 
      buttons: [{ 
       text: 'OK', 
       handler:() => { 
       this.allowedToLeave = true; 
       resolve(); 
       }, 
      }, { 
       text: 'Cancel', 
       handler:() => { 
       reject(); 
       } 
      }], 
      }); 
      confirm.present(); 
     }); 
     } 
    }); 
    } 

हालांकि यहां होता, तो उस पृष्ठ नेविगेशन ढेर से पॉप जाता है और फिर पुष्टिकरण संवाद दिखाया जाता है: मेरे कोड इस प्रकार है। ऐसा लगता है कि ionViewCanLeave() स्टोरेज कॉल चलाने की प्रतीक्षा नहीं कर रहा है, क्योंकि यह असीमित है।

मैं इस के आसपास कैसे मिल सकता है?

return this.storage.get(/* ...etc 
^^^^^^        */ 
+0

पर

और जानकारी आपके प्रश्न से संबंधित नहीं: क्या आप वाकई 'if' हालत सही है कर रहे हैं? क्या यह '' & '' के बजाय '||' नहीं होना चाहिए? बस चर के नाम से अनुमान लगा ... – trincot

+0

मैं सिर्फ इतना है कि आपके सवाल का मेरे पेज एक alerCtrl, एक समस्या यह है कि मुझे 4 दिन लगे हल करने के लिए का उपयोग कर छुट्टी को रोकने में मदद की कहने के लिए, धन्यवाद बेशक – George

उत्तर

3

आप वादा लौटना ही होगा। link

let promises = []; 

promises.push(asynchroniousFunction); 
promises.push(AnotherAsynchroniousFunction); 

Promise.all(promises).then((results) => { 
    console.log('Data from first method', results[0]); 
    console.log('Data from second method', results[1]); 
}).catch((error) => { 
    console.log('Error from first method', error[0]); 
    console.log('Error from second method', error[1]); 
}); 
+0

चाहते हैं ... कि यह हल कर रहा है । विश्वास नहीं कर सकता मैं इसे याद किया :( – Mike

0

कृपया कतार वादों पर एक नज़र डालें, Promise.all() विधि का उपयोग कर:

संबंधित मुद्दे