2017-04-12 10 views
2

私のコードの多くの部分がこの関数を呼び出しています。私はaddProductCart()を呼び出す前に、私はテスト関数を呼び出す必要がある、しかし、他のプロセスがテスト関数を呼び出し、

addProductCart(productID); 

function test() { 
    $.ajax({ 
    url : url, 
    type : 'GET', 
    success : { 
     verifyID(); 
     verifyName(); 
     verifyBlah(); 
    } 
    }); 
} 

は、私は、この他の機能を持っています。

私はこれを行うにしたいと思います:

test() ---> if test ok (success) ----> addProductCart() 

しかし、私が言ったように、他の多くのプロセスがテスト関数を呼び出す、ので、私は成功のテスト関数に私の機能(addProductCart)を設定することはできません。

どうすればいいですか?

+0

はおそらくテスト機能が何をしているのかを見るためには他のコードも見なければならないでしょうし、それらを呼び出すものは –

+2

のテストを使用しています。これはあなたを助けることができますhttp://stackoverflow.com/questions/14220321レスポンスから非同期呼び出しの返答#回答-14220323 –

+0

テスト関数をブール値に戻し、if文を成功ブロックに入れるのはどうですか?私が質問を正しく理解しているかどうかはわかりません。 – rpabood

答えて

6

使用約束!

戻りそうのようなtest機能からの約束:

function test() { 
    return $.ajax({ // <----- Notice the return statement here 
    url : url, 
    type : 'GET', 
    success : { 
     verifyID(); 
     verifyName(); 
     verifyBlah(); 
    } 
    }); 
} 

あなたが何かをテストし、これはあなたが行うことができます通過するときに、コードの別の部分を実行するために、この機能を使用する必要があります。

test().then(function(data, textStatus){ 
    //do thing 1 
    addProductCart() 
    // you can use data or textStatus returned by your ajax function here too! 
}); 

test(someParam).then(function(data, textStatus){ // <--- You can even pass parameters to test function like here, and make it do different ajax call based on your param 
    //do thing 2 
}); 

詳細については、jQuery docs for $.ajaxを参照してください。関数

ここには、あなたがそれらに精通していない場合は、あなたが始めるためにJavaScriptの約束をコンセプトに偉大なtutorialです。

+0

テスト関数から約束はどこに返されますか? – nospi

+0

$ .ajaxは約束を返します。私の答えを読むと、私はOPと同じテスト機能を持っていますが、その前にreturn文があります。 – Shaunak

+0

ああ、それはいいので、あなたの関数は同じままですので、あなたはajaxオブジェクトを返し、コールバックなしに何をする必要があるかによってそれを使い分けます。 – nospi

関連する問題