javascript - 如何知道当前回调是针对哪个调用的?

标签 javascript jquery twitch

我有一个循环对 API 进行多次 ajax 调用。对于每个调用都会有回调。 当出现错误并且没有返回数据时就会出现问题,我无法知道哪个调用导致了该错误。

如何检测回调函数内导致此错误的调​​用? 这是部分代码:

  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 + '===>'); 

现在,我不确定 API 中调用的 chname 值是什么导致了错误。 当没有错误时,我依靠从服务器返回的数据来知道回调是哪个调用的结果。当服务器返回错误时,我无法知道这个回调是针对哪个调用的。

最佳答案

正如 @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

关于javascript - 如何知道当前回调是针对哪个调用的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36278785/

相关文章:

javascript - 我不希望逗号后的空格固定宽度 - 最佳做法?

JavaScript 表单验证在提交时不起作用

ffmpeg - 使用 FFMPEG 将流从网站流式传输到 Twitch

javascript - 使用 PHP 登录和 OAuth2

javascript - 得到呈现的DIV高度

javascript - 是否可以在 iframe 中使用类似 Facebook 的按钮?

jquery - 将复选框序列化为 bool 属性和 MVC 绑定(bind)问题

javascript - 如何在 Angular 中使用 css 类进行操作

javascript - 选择后隐藏文件输入

java - 获取Json信息