2017-03-16 147 views
0

如在以下JavaScript我链接回调片断如下:jQuery.Deferred例外:XXX是不是一个函数类型错误:XXX是不是一个函数

function market_price_cb(chart, marketdata){ 
    if (!chart.isEmpty()){ 
     // ... 
    } 
    else { 
     // build chart from scratch ...     
    } 

    // do something with the chart ... 
} 


function my_chart_cb(chart, market_price_cb){ 
    $.ajax({ 
     url: 'http://localhost:8000/123' 
    }).then(function(data) { 
     market_price_data = $.parseJSON(data); 
     console.log(market_price_data); 
     market_price_cb(chart, market_price_data); 
    }); 
} 


// Fetches chart JSON data from server and rebuilds chart object 
function load_chart_from_server(symbol, data_freq, my_chart_cb) 
{ 
    $.ajax({ 
     url: 'http://localhost:8000/699', 
     success: function (data) { 
      let chart_object = $.parseJSON(data) 
      console.log(chart_object); 
      my_chart = new Chart(chart_object); 

      my_chart_cb(my_chart); 
     }, 
     async: true     
    }); 
} 

当我在我的网页上运行的代码,我得到以下错误:

Uncaught TypeError: market_price_cb is not a function

为什么我得到这个错误,我该如何解决它?

+0

是啊,这是很明显的,如果你却被不提供参数,怎么能有一个功能 –

+0

要么做scope.market_price_cb或不添加帕拉姆。如果您想将其添加为可选的do:if(market_price_cb){market_price_cb();} else {window.market_price_cb()); –

回答

0

您没有提供my_chart_cb调用的第二个参数,因此market_price_cb未定义。

+1

Doh!谢谢你确认我一直怀疑的事 - 我是个笨蛋! :/ –

+0

虽然每个人都会犯这些错误。这就是我打字稿的原因 –

0

使用此关键字访问my_chart_cb()中的函数“market_price_cb”。它会解决问题。

这意味着:

function my_chart_cb(chart, market_price_cb){ 
    $.ajax({ 
     url: 'http://localhost:8000/123' 
    }).then(function(data) { 
     market_price_data = $.parseJSON(data); 
     console.log(market_price_data); 
     this.market_price_cb(chart, market_price_data); 
    }); 
} 
相关问题