_.defer clump arguments数组

时间:2017-04-05 16:42:17

标签: javascript underscore.js

我有一个具有多个输入的javascript函数,此函数首先检查是否满足某些条件,否则,它会将此函数的执行延迟到下一个循环,直到符合条件。

function controller(obj1, obj2, obj3){ 

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

  //do something
}

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

2 个答案:

答案 0 :(得分:1)

试试这个

User::with('order_product.order')->where('id', $usersid)->get();

答案 1 :(得分:0)

这样可以解决问题:

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>