自动执行匿名函数并再次调用它

时间:2016-09-06 09:16:35

标签: javascript angularjs

我想做这样的事情:

var build= (function(){
  //my function body     
})();

function test(){
   //somthing then call build
   build() //i want to call build function again in my code
}

我该怎么做? 我用角度尝试了这个:

var buildRoot = (() => {

                $SubNode.get({
                    TypeID: vendorAdminService.NodeType.Category
                }, function(data: vendorAdminService.IGetNodeParameters) {
                    $scope.ProductTree = data.TreeNodeModelItem;
                    $scope.AjaxLoading = false;

                }, function(err) {
                    // alert(err)
                })
        })();
$mdDialog.show(confirm).then(function() {
                $Category.Remove(node.ID)
                buildRoot
            }, function() {

            }); 

但它不起作用。 任何人都可以指导我??

4 个答案:

答案 0 :(得分:1)

您需要在IIFE中返回一个功能。 如果您的IIF不是微不足道并且具有许多功能,您还可以考虑使用Reveal Module Pattern



string = "dsadaDAdasdsadDADADadsadADD"
new_string = my_downcase.call(string,0,11)
#=> "dsadadadasdsadDADADadsadADD"




答案 1 :(得分:1)

只需使用命名函数。

您的IIFE需要返回一个函数,以便稍后调用。但那时不需要匿名功能。

request.done(function( msg ) {
    window.reloadFreelancersMission= data;
    var number = reloadFreelancersMission.pagination[0].pagenbr;
    window.pagination.ReloadPager(number);
}); 

function build() {
     //my function body
}

答案 2 :(得分:0)

var build = (function() {

    var init = function() {
        // magic code
    };

    return {
        init: init
    }

}());

function test() {
    build.init()
}

test();

您在构建对象中包含所有功能,并且只要从对象内部返回它们,您就能够立即调用它们。这实际上称为揭示模块模式

有关详细信息,请read this

答案 3 :(得分:0)

我发现缺少分号";"

<div class='site-wrapper'></div>
<div class='site-wrapper-title'>Hello World</div>