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

问题描述 投票:2回答:1

我正在使用asyncjs加载谷歌图表,它工作正常,但有时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;

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

javascript jquery asynchronous async.js google-chartwrapper
1个回答
4
投票

你应该使用callback函数,转到下一次迭代。即

if(data == null){
     cb(); //in your case, cb is your callback function
 }
© www.soinside.com 2019 - 2024. All rights reserved.