【发布时间】:2015-04-24 22:28:22
【问题描述】:
我正在尝试使用一些面向对象的 Javascript 来保持我的代码干净,而不是像往常一样拥有一个巨大的凌乱脚本。使用 Ajax 使这变得复杂,由于其异步特性,难以分离代码。
我遇到的一个具体问题是使用 Ajax 设置对象属性。
我有以下代码:
var Class = function(){
this.attr1;
}
Class.prototype.setAttr1 = function(){
var self = this;
$.ajax({
url:'http://api.something.com?get=somedata',
success: function(data){
self.attr1 = data.name;
}
});
}
这应该可以,但是如果我从其他地方访问该属性,我真的不能确定它是否已设置,对吗?有没有办法处理它。就像我需要在某处使用attr1 一样,我可以等待ajax 返回吗?或者如果我完全不了解,人们在使用 Ajax 时如何封装代码?
【问题讨论】:
-
研究使用回调。回调与 AJAX 密切相关
-
异步代码不应该对任何语言的 OOP 代码产生影响。
-
出于好奇,您认为
this.attr1;行在您的Class函数中的作用是什么? -
有人争辩说,ajax 回调实际上简化了 JS 中的 OO 方法——您在完成 ajax 调用后立即创建一个对象。如果您需要在 ajax 调用之间进行同步,请使用 Promise(例如 perjQiery 的
Deferred对象)。 -
我一直在其他领域使用回调,但这是一个可能会在所有地方都使用的类属性。我认为延迟和承诺是我正在寻找的。span>
标签: javascript ajax oop