2016-08-03 6 views
0

に繰延べ使用します。私が試してみましたは、私は、このイベントでボタンを持っているjqueryの非同期のPOST呼び出し

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); 
     } 
    }); 
}); 

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(); 
}); 

これが第二の機能である

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

    }); 

しかし、私はpostCallOne.doneは関数ではありません戻ってきました。

私はあまりよく知らないDeferred、誰が私を助けることができますか?

ありがとうございます。

+0

'postCallOne()。done(postCallTwo);'?! –

答えて

1

あなたはこのようにそれを呼び出す必要があります:

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

}); 

あなたが書かれている方法に問題が繰り延べがpostCallOneから解決される前に、postCallTwoへの呼び出しが配置されますです。あなたは解決するためにpostCallOneを待つ必要があり、postCallOneが成功した場合にpostCallTwoをチェーンします。これは、繰延が存在する理由です。

+0

しかし、私はUncaught TypeErrorを返しました:postCallOne.doneは関数ではありません – michele

+0

私の悪い、チェーンを使用してください。 '' postCallOne.then(function(){postCallTwo()}) '' – Araknid

+0

mmmm今私は持っていません。関数 – michele

関連する問題