编译coffeescript时添加了不需要的js代码

Unwanted js code added while compiling coffeescript

本文关键字:js 代码 不需要 coffeescript 添加 编译      更新时间:2023-09-26

我是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隐式函数返回值,而循环也是生成数组的唯一表达式。文件状态:

有时函数以循环结束,这些循环只用于运行它们的副作用。小心不要意外地回来在这些情况下,通过添加有意义的返回值,如truenull,位于您的功能。

因此,您期望的javascript可以通过编写来创建

…
    success: (data) ->
        for oneResponse in data
            displayValues.push oneResponse.name
        return
…

("尾部returnreturn 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) ->
    …