【问题标题】:Passing variables between promise methods in jQuery AJAX [duplicate]在jQuery AJAX中的promise方法之间传递变量[重复]
【发布时间】:2015-09-07 16:13:27
【问题描述】:

我正在尝试在一个 promise 方法中设置一个 variable 并在另一个方法中访问它,但运气不佳。

我有这个代码:

$.getJSON('some/file/')
.done(function(response) {
    var foo = response;
})
.always(function() {
    // How can I access 'foo' here?
});

那么如何在其他 promise 方法中访问 foo 变量呢?

【问题讨论】:

  • 你需要在done()之外声明foo
  • 这看起来是个非常糟糕的主意。如果承诺失败,foo 不会被设置,所以你的always 回调会抛出试图使用它。你真正想做什么,你需要解决的真正问题是什么?

标签: javascript jquery ajax promise


【解决方案1】:

如果您在done() 函数之外声明变量,那么您可以在always() 中访问它

var foo;
$.getJSON('some/file/')
.done(function(response) {
    foo = response;
})
.always(function() {
    // How can I access 'foo' here?
    console.log(foo);
});

您可能会发现this 也很有趣。还要记住,总是会在ajax失败时执行。

【讨论】:

  • 有道理,非常感谢。是的,知道always 的事情,这就是我想要的行为。 :)
  • 也许完成/失败方法是更好的方法
  • 不,对于我使用代码的情况,我不希望 always 块中的代码依赖于 JSON 文件的检索结果 - 它总是 必须被执行。
猜你喜欢
  • 2013-10-30
  • 1970-01-01
  • 2012-03-20
  • 2018-08-08
  • 1970-01-01
  • 2011-04-21
相关资源
最近更新 更多