You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					56 lines
				
				1.7 KiB
			
		
		
			
		
	
	
					56 lines
				
				1.7 KiB
			| 
											3 years ago
										 | "use strict"; | ||
|  | module.exports = | ||
|  | function(Promise, INTERNAL, tryConvertToPromise, apiRejection, debug) { | ||
|  | var util = require("./util"); | ||
|  | var tryCatch = util.tryCatch; | ||
|  | 
 | ||
|  | Promise.method = function (fn) { | ||
|  |     if (typeof fn !== "function") { | ||
|  |         throw new Promise.TypeError("expecting a function but got " + util.classString(fn)); | ||
|  |     } | ||
|  |     return function () { | ||
|  |         var ret = new Promise(INTERNAL); | ||
|  |         ret._captureStackTrace(); | ||
|  |         ret._pushContext(); | ||
|  |         var value = tryCatch(fn).apply(this, arguments); | ||
|  |         var promiseCreated = ret._popContext(); | ||
|  |         debug.checkForgottenReturns( | ||
|  |             value, promiseCreated, "Promise.method", ret); | ||
|  |         ret._resolveFromSyncValue(value); | ||
|  |         return ret; | ||
|  |     }; | ||
|  | }; | ||
|  | 
 | ||
|  | Promise.attempt = Promise["try"] = function (fn) { | ||
|  |     if (typeof fn !== "function") { | ||
|  |         return apiRejection("expecting a function but got " + util.classString(fn)); | ||
|  |     } | ||
|  |     var ret = new Promise(INTERNAL); | ||
|  |     ret._captureStackTrace(); | ||
|  |     ret._pushContext(); | ||
|  |     var value; | ||
|  |     if (arguments.length > 1) { | ||
|  |         debug.deprecated("calling Promise.try with more than 1 argument"); | ||
|  |         var arg = arguments[1]; | ||
|  |         var ctx = arguments[2]; | ||
|  |         value = util.isArray(arg) ? tryCatch(fn).apply(ctx, arg) | ||
|  |                                   : tryCatch(fn).call(ctx, arg); | ||
|  |     } else { | ||
|  |         value = tryCatch(fn)(); | ||
|  |     } | ||
|  |     var promiseCreated = ret._popContext(); | ||
|  |     debug.checkForgottenReturns( | ||
|  |         value, promiseCreated, "Promise.try", ret); | ||
|  |     ret._resolveFromSyncValue(value); | ||
|  |     return ret; | ||
|  | }; | ||
|  | 
 | ||
|  | Promise.prototype._resolveFromSyncValue = function (value) { | ||
|  |     if (value === util.errorObj) { | ||
|  |         this._rejectCallback(value.e, false); | ||
|  |     } else { | ||
|  |         this._resolveCallback(value, true); | ||
|  |     } | ||
|  | }; | ||
|  | }; |