我是coffeescript的新手,我有一个名为的coffeesccript代码
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;
};
我只想将值推送到CCD_ 1&displayValues[]
,但为什么要创建_results[]
阵列?它会妨碍浏览器的效率吗?有没有办法删除这些不必要的代码?可能是,通过编辑我的咖啡脚本。
编辑:工作条件
但是当我把一个警报代码作为
$.ajax
contentType: 'application/json',
url: "/Services/ListProviders?domainid=#{domainId}",
success: (data) ->
for oneResponse in data
displayValues.push oneResponse.name
alert displayValues
displayValues
此代码有效,我可以检索所需的数据。
除此之外,您的代码无论如何都无法工作,生成_results
是因为coffeescripts隐式函数返回值,而循环也是生成数组的唯一表达式。文件状态:
有时函数以循环结束,这些循环只用于运行它们的副作用。小心不要意外地回来在这些情况下,通过添加有意义的返回值,如
true
或null
,位于您的功能。
因此,您期望的javascript可以通过编写来创建
…
success: (data) ->
for oneResponse in data
displayValues.push oneResponse.name
return
…
("尾部return
和return undefined
现已优化。"-自1.0.1版本起)
另请参阅是否有任何方法可以不使用CoffeeScript返回某些内容?
然而,你真正想要的是:
getProviderListDisplayValues:(domainId) ->
$.ajax
contentType: 'application/json',
url: "/Services/ListProviders?domainid=#{domainId}"
.then (data) ->
for oneResponse in data
oneResponse.name
…
getProviderListDisplayValues(…).then (displayValues) ->
…