【发布时间】:2014-10-22 06:42:11
【问题描述】:
我是 coffeescript 的新手,我有一个咖啡脚本代码
getProviderListDisplayValues:(domainId) ->
displayValues = []
$.ajax
contentType: 'application/json',
url: "/Services/ListProviders?domainid=#{domainId}",
success: (data) ->
for oneResponse in data
displayValues.push oneResponse.name
displayValues
编译成
CounselorHome.prototype.getProviderListValues = function(domainId) {
var values;
values = [];
$.ajax({
contentType: 'application/json',
url: "/Services/ListProviders?domainid=" + domainId,
success: function(data) {
var oneResponse, _i, _len, _results;
_results = [];
for (_i = 0, _len = data.length; _i < _len; _i++) {
oneResponse = data[_i];
_results.push(values.push(oneResponse.id));
}
return _results;
}
});
return values;
};
我只想将值推送到 values[] 和 displayValues[] 但为什么要创建 _results[] 数组?它会影响浏览器的效率吗?有什么办法可以删除这种不必要的代码吗?可能是,通过编辑我的咖啡脚本。
编辑:工作条件
但是当我把警报代码设置为
$.ajax
contentType: 'application/json',
url: "/Services/ListProviders?domainid=#{domainId}",
success: (data) ->
for oneResponse in data
displayValues.push oneResponse.name
alert displayValues
displayValues
此代码有效,我可以检索所需的数据。
【问题讨论】:
-
ajax 是 asynchronous 所以我认为您正在尝试做一些无法按预期工作的事情。看起来咖啡注意到了这一点,因此永远不会以可引用的方式给你
_results -
是的,在重新使用 values[] 时,它会为 Google Chrome 返回 undefined,而为 FireFox 返回 null。但是我已经编写了将所有数据推送到值 [] 的代码。因此,问题。