2016-08-03 3 views
0

Ich habe einen Knopf mit diesem Ereignis:unter Verwendung der in jquery asynch POST Aufruf latenten

$("#getSensorsObs").click(function (e) { 
     e.preventDefault(); 
     postCallOne(); 
     postCallTwo(); 
    }); 

ich postCallTwo Feuer wollen, wenn postCallOne mit Erfolg das erste Gespräch beendet hat.

function postCallOne() { 
    setWait(); 
    //do something 

    return $.post(ADDRESS, {fieldONE : fieldOneVal }) 
    .done(function (data) { 
     console.log("RESPONSE SUCCESS "); 
     // do something 

    }).error(function(x, t, m) { 
      alert(x + ' ' + t + ' ' + m); 
     } 
    }).then(function (resp) { 
     return $.Deferred(function(def){ 
     def.resolveWith({},[resp == 1,valueSelected]); 
    }).promise(); 
}); 

Dies ist die zweite Funktion:

function postCallTwo() { 
    setWait(); 
    //do something 

    return $.post(ADDRESS2, {fieldONE : fieldOneVal }) 
    .done(function (data) { 
     console.log("RESPONSE SUCCESS "); 
     // do something 

    }).error(function(x, t, m) { 
      alert(x + ' ' + t + ' ' + m); 
     } 
    }); 
}); 

ich versucht:

$("#button").click(function (e) { 
     e.preventDefault(); 
     postCallOne.then(function(){postCallTwo();}); 

    }); 

Aber ich habe zurück postCallOne.done keine Funktion ist.

Ich weiß nicht sehr gut Aufgeschoben, wer kann mir helfen?

Vielen Dank.

+0

'postCallOne(). Done (postCallTwo);'?! –

Antwort

1

Sie müssen es so nennen:

$("#button").click(function (e) { 
    e.preventDefault(); 
    postCallOne().then(function() {postCallTwo()};); 

}); 

Das Problem mit der Art und Weise Sie geschrieben haben, der Aufruf an postCallTwo ist platziert werden, bevor die latenten aus postCallOne aufgelöst wird. Sie müssen warten, bis postCallOne aufgelöst werden kann, und dann ketten Sie postCallTwo nach dem Erfolg von postCallOne. Das ist der Grund dafür, dass es Abgrenzungen gibt.

+0

Aber ich habe Uncaught TypeError zurückgegeben: postCallOne.done ist keine Funktion – michele

+0

Meine schlechte, bitte Kette es mit .then: 'postCallOne.then (function() {postCallTwo()})' – Araknid

+0

mmmm jetzt habe ich .then ist nicht eine Funktion – michele

Verwandte Themen