javascript - 如果 async.jquery 中的响应为 null,则跳过迭代

标签 javascript jquery asynchronous async.js google-visualization

我正在使用 asyncjs 加载 Google 图表,它工作正常,但有时我从中获取图表数据的 api 会返回空值,并且会停止加载更多图表。

这是我的代码

async.eachSeries($('.WeeklyGraph'), function(e, cb){
var ticker = $(e).data('coin');
// console.log(ticker);
$('#'+ticker+'loader').removeClass("hide-sideLoader");
$.getJSON('https://coincap.io/history/7day/'+ticker, function(data){
    // console.log(data);
var month = new Array();
month[0] = "Jan";
month[1] = "Feb";
month[2] = "Mar";
month[3] = "Apr";
month[4] = "May";
month[5] = "Jun";
month[6] = "Jul";
month[7] = "Aug";
month[8] = "Sep";
month[9] = "Oct";
month[10] = "Nov";
month[11] = "Dec";
    var CoinPrices = data['price'];
        $.each(CoinPrices, function(index, CoinObject){
            var date = new Date(CoinObject[0]);
            var day = date.getDate();
            var Month = date.getMonth();
            var hours = date.getHours()+ ":" + date.getMinutes();
            CoinObject[0] = day+" "+month[Month]+" "+hours;
        });  
        google.charts.load('current', {packages: ['corechart', 'line']});
        google.charts.setOnLoadCallback(function(){
        var data = new google.visualization.DataTable();
        data.addColumn('string', '');
        data.addColumn('number', '');
        data.addRows(CoinPrices);
        var options = {
            enableInteractivity: false,
           legend: {position: 'none'},
            hAxis: {
            title: '',
            baselineColor: 'none',
            ticks: [],
            gridlines: {color: 'none'}
        },
        vAxis: {
            title: '',
            baselineColor: 'none',
            ticks: [],
            gridlines: {color: 'none'}
        },
            colors: ['#74b42a', '#74b42a']
        };
        var chartID = ticker+'chart_div';
        var chart = new google.visualization.LineChart(document.getElementById(chartID));
        chart.draw(data, options);
        $('#'+ticker+'loader').addClass("hide-sideLoader");
        // $("#chartContent"+coinID).removeClass("hide-chart");
        });

    cb();
});

});

现在我得到响应的data变量,有时它返回null并且进一步的迭代停止。

我已经尝试过设置

 if (data == null)
     return;

   if (data == null)
     return true;

但它会停止所有进一步的迭代。

最佳答案

您应该使用回调函数来转到下一次迭代。即

if(data == null){
     cb(); //in your case, cb is your callback function
 }

关于javascript - 如果 async.jquery 中的响应为 null,则跳过迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48018228/

相关文章:

swift - 如果主队列始终同步,为什么 dispatchQueue.main 会给我同步或异步选项

python - 委托(delegate)给异步子生成器

javascript - CSS z-index 和变换奇怪的 flash

javascript - 如何检测 HTML 元素是否是 React 组件的根?

javascript - 将字符串替换为 angualrjs1 中的 anchor 标记

jQuery 代码适用于控制台,但不适用于页内

javascript - 如何在 Javascript/AngularJS 中从 Parse.com 异步调用后获取正确的索引

javascript - KnockoutJS 绑定(bind)未使用可观察集合进行更新

javascript - 如何使用 angularjs 变量在jsp页面中动态更改脚本标签的路径? (可能重复)

javascript - 如何知道 document.ready 还剩多少时间/%?