首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >_.defer簇参数数组

_.defer簇参数数组
EN

Stack Overflow用户
提问于 2017-04-06 00:42:17
回答 2查看 117关注 0票数 0

我有一个javascript函数,它有多个输入,这个函数首先检查某个条件是否满足,如果不是,它会将这个函数的执行延迟到下一个周期,直到满足条件。

代码语言:javascript
运行
复制
function controller(obj1, obj2, obj3){ 

  if(!obj3.hasValue) {
        _.defer(controller, arguments);
        return;
   }

  //do something
}

但是,当控制器下一次被_.defer触发时,整个参数数组被分配给obj1。obj2和obj3未定义。有没有一种干净的方法可以让输入保持独立,就像第一次调用控制器时一样?

EN

回答 2

Stack Overflow用户

发布于 2017-04-06 00:51:47

尝尝这个

代码语言:javascript
运行
复制
function controller(obj1, obj2, obj3){ 

  if(!obj3.hasValue) {

        var self = this
        var args = arguments
        _.defer(function(){ controller.apply(self, args) });

        return;
   }

  //do something
}
票数 1
EN

Stack Overflow用户

发布于 2017-04-06 00:57:48

这将会起到作用:

代码语言:javascript
运行
复制
function controller(obj1, obj2, obj3){ 

  if(!obj3.hasValue) {
        _.defer(controller, ...arguments);
        return;
   }

  //do something
}

JSFiddle示例:https://jsfiddle.net/amvpkg4g/

代码语言:javascript
运行
复制
function controller(obj1, obj2, obj3){ 
	console.log('obj1: ' + obj1, 'obj2: ' + obj2, 'obj3: ' + obj3);
}

var arguments = [1, 2, 3];
_.defer(controller, ...arguments);
代码语言:javascript
运行
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js" ></script>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43237007

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档