回调没有在javascript中执行

时间:2015-08-04 13:58:43

标签: javascript function callback

我写了一个应该执行回调的方法,但回调没有被执行:

buildTable('lt', 'viewltDetails', commonTireColumns, function(error) {
if(error) {
    console.log(error);
} else {
    console.log('calculating');
    calculatedPricing();
}
});

我的buildTable函数 - 它实际上是使用aldeed-tabular包创建一个数据表:

function buildTable(tblName, detailsBtn, columnDetails) {
var columns = [];
for(var key in columnDetails) {
      columns.push({
        data: columnDetails[key].data, 
        title: columnDetails[key].title, 
        width: columnDetails[key].width
      });
    };
columns.push({
    title: "Quantity",
    tmpl: Meteor.isClient && Template.itemQuantityCell,
    width: "2%"
});
columns.push({
    title: "Details",
    tmpl: Meteor.isClient && Template[detailsBtn],
});
columns.push({
    title: "Action",
    tmpl: Meteor.isClient && Template.addToCartCell,
});

TabularTables[tblName] = new Tabular.Table({
    name: tblName,
    changeSelector: function(selector, userId) {
        return selector;
    },
    collection: Products,
    pub: "tabular_Products",
    columns: columns,
    extraFields: ['priceFET', 'invoicePrice', 'category']
})
};

buildTable函数工作正常,但它没有执行console.log('calculating')calculatePricing()命令,尽管该函数没有抛出任何错误。

我的calculatePricing函数如下所示:

calculatedPricing: function() {
    var price = 300;
    return price;
};

有人可以帮忙吗?谢谢!

2 个答案:

答案 0 :(得分:3)

请尝试这样。 你添加了一个calback函数,但你没有参数,所以你永远不会在你的函数上调用它。

 function buildTable(tblName, detailsBtn, columnDetails, callback) {
         //your code here
         if(typeof callback === "function"){
           callback();
         }
    }

答案 1 :(得分:1)

你需要为你的buildTable函数添加一个回调参数

变化:

function buildTable(tblName, detailsBtn, columnDetails) {

为:

function buildTable(tblName, detailsBtn, columnDetails, callback) {

然后,称之为:

callback(someError);