【问题标题】:JavaScript method passing parametersJavaScript 方法传递参数
【发布时间】:2016-12-01 15:43:23
【问题描述】:

我在 8 年前使用过 dojo,所以我对 dojo 1.7+ 非常陌生。我想定义一个带参数的方法,但它对dojo 模块(lang)也有要求。所以我尝试了以下方法。

 <script>
    function fillReportTable(repId) {
        require(['dojo/_base/lang'], function(lang) {

             //just example calls to lang..
             var obj = { a:"b", c:"d" };
             var thing = lang.clone(obj);
            repId = repId + 1;
        });

        return repId;
    };

    alert(fillReportTable(13))
</script>

但是alert(fillReportTable(13)) 显示的是整个函数定义而不是数字 14。我错过了什么?

【问题讨论】:

    标签: javascript methods parameters dojo


    【解决方案1】:

    如果您要使用dojo,那么几乎所有东西都需要是AMD module,并且可能只是一点点vanilla Javascipt。所以,你可以把你的函数变成AMD module,而且很简单

    myApp/fillReportTable.js

    define(['dojo/_base/lang'],function (lang) 
    {                
        return function fillReportTable(repId) {
            var obj = { a:"b", c:"d" };
            var thing = lang.clone(obj);
            return repId + 1;
        }
    }); 
    

    那么,你可以require

    require(["myApp/fillReportTable"], function(  fillReportTable )
    {
        console.log(fillReportTable(123));
    });
    

    但是如果你继续你的方法,那么你可以使用Promise解决它

    function fillReportTable(repId){
       return new Promise(function(resolve){
            require(['dojo/_base/lang'],function (lang){                
                var obj = { a:"b", c:"d" };
                var thing = lang.clone(obj);
                resolve(repId + 1);
            });
       });  
    };
    

    使用方法

    fillReportTable('Hello World').then(function(repId){
        console.log(repId);
    });
    

    注意PromiseECMAScript6 feature

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 2013-06-03
      • 2013-08-01
      • 1970-01-01
      • 2014-10-25
      • 2017-12-22
      • 1970-01-01
      • 2012-07-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多