【问题标题】:How to return value of $.get()? [duplicate]如何返回 $.get() 的值? [复制]
【发布时间】:2014-10-29 18:43:13
【问题描述】:

我对stackoverflow做了一些研究,但我没有找到我的问题的答案,我仍然无法评论,所以我不能问。

我有一个异步方法,我需要从中获取一个返回值给调用它的方法:

somefunc(data) {
  var x = filterSwear(data);
  // do sth...
  // ...
}

function filterSwear(msg) {
  var xx;
  $.get('/swearWords.csv', function(data) {
    var swearWords = data.split(',');
    for(var i = 0; i < swearWords.length; i++) {
      var subs = "***";
      var x = "".concat("\b" + swearWords[i] + "\b"); // !
      var reg = new RegExp(x, "gi");
      xx = msg.replace(reg, subs);
    }
    //console.log(xx);
  });
  //console.log(xx);
  return xx;
}

问题是将数据返回到第一个函数。 或者我应该继续使用那里的原始功能,我有数据吗?

附:我找到了我的问题的部分答案here

【问题讨论】:

  • jQuery ajax 函数返回 Promise 对象 - 您可以简单地将 $.get 调用的结果返回给调用函数,并通过回调访问 ajax 响应
  • 我对这件事有点缺乏经验,你能解释一下我需要访问哪些对象属性才能获取数据吗?
  • 你想获取哪些数据?
  • 来自 $.get() 方法中的 xx

标签: javascript jquery ajax asynchronous


【解决方案1】:

您需要使用回调重写代码,以便在异步操作完成后继续执行:

somefunc(data) {

  var onFilterSwearSearchComplete = function(x){    //will be called once async stuff completes in filterSwear
    //x here is the 'xx' value from filterSwear
  };
  filterSwear(data, onFilterSwearSearchComplete);
}

function filterSwear(msg, callback) {
  $.get('/swearWords.csv', function(data) {
    var subs = "***";
    var x = "".concat("\b" + swearWords[i] + "\b"); // !
    var reg = new RegExp(x, "gi");
    xx = msg.replace(reg, subs);
    callback(xx);
  });
}

【讨论】:

    猜你喜欢
    • 2020-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-17
    • 2013-02-19
    • 2021-04-04
    • 2014-12-11
    • 2012-01-23
    相关资源
    最近更新 更多