12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- /** @license MIT License (c) copyright 2010-2014 original author or authors */
- /** @author Brian Cavalier */
- /** @author John Hann */
- (function(define) { 'use strict';
- define(function() {
- makeApply.tryCatchResolve = tryCatchResolve;
- return makeApply;
- function makeApply(Promise, call) {
- if(arguments.length < 2) {
- call = tryCatchResolve;
- }
- return apply;
- function apply(f, thisArg, args) {
- var p = Promise._defer();
- var l = args.length;
- var params = new Array(l);
- callAndResolve({ f:f, thisArg:thisArg, args:args, params:params, i:l-1, call:call }, p._handler);
- return p;
- }
- function callAndResolve(c, h) {
- if(c.i < 0) {
- return call(c.f, c.thisArg, c.params, h);
- }
- var handler = Promise._handler(c.args[c.i]);
- handler.fold(callAndResolveNext, c, void 0, h);
- }
- function callAndResolveNext(c, x, h) {
- c.params[c.i] = x;
- c.i -= 1;
- callAndResolve(c, h);
- }
- }
- function tryCatchResolve(f, thisArg, args, resolver) {
- try {
- resolver.resolve(f.apply(thisArg, args));
- } catch(e) {
- resolver.reject(e);
- }
- }
- });
- }(typeof define === 'function' && define.amd ? define : function(factory) { module.exports = factory(); }));
|