2016-03-29 2 views
0

APIへのいくつかのajax呼び出しを行うループがあります。コールごとにコールバックがあります。 エラーが発生し、データが返されないときに問題が発生した場合、その呼び出しを行った呼び出しを知ることができません。現在のコールバックがどのコールに対応しているかを知るには?

このエラーの原因となったコールをコールバック関数で検出するにはどうすればよいですか?私は、エラーをするためにAPIで呼び出されたchnameのどのような値がわからない、今

for (var i = 0; i < channels.length; i++) { 

if ($.inArray(channels[i], livenow) > -1) { 

    continue; 
} 
this.chname = channels[i]; //this is the channel name 
Twitch.api({ 
    method: 'channels/' + this.chname 
}, function(error, list) { 
//insdie this callback 
//chname may have been changed when we received the callback 
    console.log(this.chname + '===>'); 

: は、ここでは、コードの一部です。 エラーがない場合は、サーバーから返されたデータに基づいて、コールバックの結果がコールバックであることがわかります。サーバーがエラーを返すとき、私はこのコールバックがどのコールであるかを知ることができません。

+1

あなたはAPIを表示することができます呼び出し - 実際にはコードを参照することはできません。 –

+0

コールバックは元の要求オブジェクトにも公開されています。これを使用してリクエストの詳細を取得できます。 – Boaz

+0

私はループで呼び出しを行い、コールバックを受け取った時点でエラーが発生した呼び出しがわからない – Tamer

答えて

1

@boazが提案しているように、クロージャを使用すると各呼び出しの環境が維持されます。 ので、コードは次のようになります。上記の閉鎖を使用する

function mycall(chname) { 

function twitchcall() { 

Twitch.api({ 
    method: 'channels/' + chname 
}, function(error, list) { 
//callback code would be able to access chname when the twitch call was made 
}); 
}; 
return twitchcall;} 

、我々は完全な例えばループ

//now to use it inside the loop 
calls[i] = mycall(xchname); 
calls[i](); 

の内側に次のように記述http://codepen.io/TamerMarzouk/pen/VabQvP

関連する問題