Javascript中的返回值来自其他函数

时间:2014-01-09 05:12:13

标签: javascript function return

所以我想从一个函数中返回一个字符串,该函数会形成两个深度的AJAX调用。我可以弄清楚这样做的一种混乱方式,但我想有更好的方法来做到这一点?

function fetchAndFillTemplate(options) {
  $.getJSON(options.data, {}, function(data, status) {      
    $.get(options.template, function(template) {

      // this is the string I want to return when you call 'fetchAndFillTemplate'
      var rendered_template = Mustache.to_html(template, data);

    });
  });
}

1 个答案:

答案 0 :(得分:4)

您无法返回该值,因为它是异步任务。

不使用Promise的解决方法是:

function fetchAndFillTemplate(options, callback) {
  $.getJSON(options.data, {}, function(data, status) {      
    $.get(options.template, function(template) {

      // this is the string I want to return when you call 'fetchAndFillTemplate'
      var rendered_template = Mustache.to_html(template, data);
      callback(rendered_template);
    });
  });
}

如您所见,我们添加了一个新参数callback,即function;

那么,不要这样叫:

var tpl = fetchAndFillTemplate(options);

你必须这样做:

fetchAndFillTemplate(options, function(rendered_template){
    var tpl = rendered_template;
});

希望这会有所帮助。干杯

PS:嗯,有一种方法可以通过调用ajax调用sync来返回最终值,但我不会发布它,因为它根本不推荐(阻止UI)。