2017-03-21 1 views
0

Ich habe versuchen, folgenden Code, aber es funktioniert nicht gut Ich legte Logger in beiden Methoden, um zu überprüfen, welche Methode Ausführung beenden, aber addPersonalData Methode wie per Logger aufrufen.Versprechen funktioniert nicht auf node.js

var promisePersonal = removePersonalData(profile); 
promisePersonal.then(
    addPersonalData(personal, profile) 
); 

function removePersonalData(profile) { 
    return new Promise(function(resolve, reject) { 
     var id = profile._id; 
     Personal.remove({ 
      parent_id: id 
     }, function(error) { 
      if (!error) { 
       logger.info('Personal Remove : success'); 
       resolve(profile); 
      } else { 
       logger.error('Personal Remove : error' + error); 
       reject(error); 
      } 
     }); 
    }); 
} 

Logger:

12: 22: 45 PM - info: Inside addPersonalData mothod <----- //here is problem 
12: 22: 45 PM - info: Profile saved: addPersonalData 
12: 22: 45 PM - info: Enter into removeEducationData 
12: 22: 45 PM - info: Number of Education data::2 
12: 22: 45 PM - info: Inside addEducationData mothod 
12: 22: 45 PM - info: Personal Remove: success <---- //here is problem this should be first execute 
12: 23: 10 PM - info: Education Remove: success 

was ich Fehler in obigem Code machen? Bitte geben Sie mir Ihren wertvollen Rat, um dies zu beheben.

Antwort

1

Dort ist alles ok mit Promise s ist einfach es falsch verwendet wird. Versuchen Sie folgendes:

var promisePersonal = removePersonalData(profile); 
promisePersonal.then(function(profile) { 
    addPersonalData(personal, profile); 
}); 

function removePersonalData(profile) { 
    return new Promise(function(resolve, reject) { 
     var id = profile._id; 
     Personal.remove({ 
      parent_id: id 
     }, function(error) { 
      if (!error) { 
       logger.info('Personal Remove : success'); 
       resolve(profile); 
      } else { 
       logger.error('Personal Remove : error' + error); 
       reject(error); 
      } 
     }); 
    }); 
} 
+0

ok, ich sollte diese –

+0

versuchen, die Arbeit ist :) können Sie 'Versprechen erarbeiten all' @ ponury-Kostek? –

+0

Zeigen Sie eine Schleife, die Sie durchlaufen –

-1

Bitte ändern Sie den Code wie folgt. Hoffe es wird helfen.

Grund: Promise.then akzeptiert eine Funktion, aber Sie haben einen Funktionsaufruf geliefert.