我有一个javascript函数,它有多个输入,这个函数首先检查某个条件是否满足,如果不是,它会将这个函数的执行延迟到下一个周期,直到满足条件。
function controller(obj1, obj2, obj3){
if(!obj3.hasValue) {
_.defer(controller, arguments);
return;
}
//do something
}
但是,当控制器下一次被_.defer触发时,整个参数数组被分配给obj1。obj2和obj3未定义。有没有一种干净的方法可以让输入保持独立,就像第一次调用控制器时一样?
发布于 2017-04-06 00:51:47
尝尝这个
function controller(obj1, obj2, obj3){
if(!obj3.hasValue) {
var self = this
var args = arguments
_.defer(function(){ controller.apply(self, args) });
return;
}
//do something
}
发布于 2017-04-06 00:57:48
这将会起到作用:
function controller(obj1, obj2, obj3){
if(!obj3.hasValue) {
_.defer(controller, ...arguments);
return;
}
//do something
}
JSFiddle示例:https://jsfiddle.net/amvpkg4g/
function controller(obj1, obj2, obj3){
console.log('obj1: ' + obj1, 'obj2: ' + obj2, 'obj3: ' + obj3);
}
var arguments = [1, 2, 3];
_.defer(controller, ...arguments);
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js" ></script>
https://stackoverflow.com/questions/43237007
复制相似问题