/** * Created by cuppi on 2017/9/4. */ import {otherUrl} from "../unify/JUrlList"; class JPromise extends Promise{ useParas: (...paras: Array) => JPromise; useHeaders: (...paras: Array) => JPromise; otherParas?: Array; otherHeaders?: Array; static create(para: Promise | ((resolve: (value?: any | PromiseLike) => void, reject: (reason?: any) => void) => void)): JPromise{ let promise:Promise = null; if (typeof para == "function"){ promise = new Promise(para); } else { promise = para as Promise; } let hasCanceled_ = false; const wrappedPromise = new Promise((resolve, reject) => { promise.then((val) => hasCanceled_ ? () => { } : resolve(val), () => { // 不写会有警告 }); promise.catch((error) => hasCanceled_ ? () => { } : reject(error)); }); let _promise: JPromise = { ...wrappedPromise, terminate: () => { hasCanceled_ = true; }, then: (resolve, reject) => { return wrappedPromise.then(resolve, reject); }, otherParas: [], otherHeaders: [], useParas: (...paras) => { _promise.otherParas = paras; return _promise; }, useHeaders: (...headers) => { _promise.otherHeaders = headers; return _promise; } } as JPromise; return _promise; } } export default JPromise;