나는 특정 작업을 수행 할 수있는 방법을 찾고 있어요 그것은.bind 사용 .apply .call()와()를 피하기()
when(promiseArray).done(...)
에
jQuery.when.apply(null, promiseArray).done(...)
에서 것입니다
아시다시피, .bind()
을 사용하면 기본 인수와 같은 것을 만들 수 있고 꽤 멋진 일을 할 수 있습니다. 예, 대신 항상
var toStr = Object.prototype.toString;
// ...
toStr.call([]) // [object Array]
를 호출하기 위해 우리는이 같은 .bind()
를 호출 성능 위약금이있는 경우에도 (매우 멋진
var toStr = Function.prototype.call.bind(Object.prototype.toString);
toStr([]) // [object Array]
처럼 할 수있다, 나는 그것을 알고 난 그것을 알고),하지만 난 정말 jQuerys .when
전화를 위해 그것을 수행 할 수 없습니다. 알려지지 않은 양의 약속 객체가있는 경우 대개 배열을 배열로 밀어 넣어 위에있는 첫 번째 코드 조각과 같이 .when
에 전달할 수있게합니다.
var when = Function.prototype.apply.bind($.when);
이제 우리는
when(null, promiseArray).done(...)
이 작동 같이 갈 수 있지만, 나는 또한 null
에 명시 적으로 모든 통과의 필요성을 제거 할 :
나는 지금까지하고 있어요 시각. 그래서
var when = Function.prototype.apply.bind($.when.call.bind(null));
을 시도하지만 나를 던졌습니다 :
"TypeError: Function.prototype.apply called on incompatible null"
내가 지금 너무 오랫동안이 위에 앉아 것 같아 더 이상 똑바로 생각할 수 없다. 쉬운 해결책이있는 것처럼 느껴집니다. 이 문제를 해결하기 위해 추가 기능을 사용하고 싶지 않습니다. .bind()
을 사용하는 솔루션을 선호합니다. http://jsfiddle.net/pp26L/
'.bind':
그리고 업데이트 jsfiddle을? – Raynos
@ 레이 노스 : 예, 내 상처 입은 자아에 소금을 문지르세요.: p – jAndy