提交 20c70da8 编写于 作者: fxy060608's avatar fxy060608

fix(v3): es7.promise.finally https://ask.dcloud.net.cn/question/87814

上级 ad65b436
...@@ -235,13 +235,15 @@ const SYNC_API_RE = ...@@ -235,13 +235,15 @@ const SYNC_API_RE =
const CONTEXT_API_RE = /^create|Manager$/; const CONTEXT_API_RE = /^create|Manager$/;
const ASYNC_API = ['createBLEConnection'];
const CALLBACK_API_RE = /^on/; const CALLBACK_API_RE = /^on/;
function isContextApi (name) { function isContextApi (name) {
return CONTEXT_API_RE.test(name) return CONTEXT_API_RE.test(name)
} }
function isSyncApi (name) { function isSyncApi (name) {
return SYNC_API_RE.test(name) return SYNC_API_RE.test(name) && ASYNC_API.indexOf(name) === -1
} }
function isCallbackApi (name) { function isCallbackApi (name) {
...@@ -266,6 +268,19 @@ function shouldPromise (name) { ...@@ -266,6 +268,19 @@ function shouldPromise (name) {
return true return true
} }
/* eslint-disable no-extend-native */
if (!Promise.prototype.finally) {
Promise.prototype.finally = function (callback) {
const promise = this.constructor;
return this.then(
value => promise.resolve(callback()).then(() => value),
reason => promise.resolve(callback()).then(() => {
throw reason
})
)
};
}
function promisify (name, api) { function promisify (name, api) {
if (!shouldPromise(name)) { if (!shouldPromise(name)) {
return api return api
...@@ -279,18 +294,6 @@ function promisify (name, api) { ...@@ -279,18 +294,6 @@ function promisify (name, api) {
success: resolve, success: resolve,
fail: reject fail: reject
}), ...params); }), ...params);
/* eslint-disable no-extend-native */
if (!Promise.prototype.finally) {
Promise.prototype.finally = function (callback) {
const promise = this.constructor;
return this.then(
value => promise.resolve(callback()).then(() => value),
reason => promise.resolve(callback()).then(() => {
throw reason
})
)
};
}
}))) })))
} }
} }
......
...@@ -235,13 +235,15 @@ const SYNC_API_RE = ...@@ -235,13 +235,15 @@ const SYNC_API_RE =
const CONTEXT_API_RE = /^create|Manager$/; const CONTEXT_API_RE = /^create|Manager$/;
const ASYNC_API = ['createBLEConnection'];
const CALLBACK_API_RE = /^on/; const CALLBACK_API_RE = /^on/;
function isContextApi (name) { function isContextApi (name) {
return CONTEXT_API_RE.test(name) return CONTEXT_API_RE.test(name)
} }
function isSyncApi (name) { function isSyncApi (name) {
return SYNC_API_RE.test(name) return SYNC_API_RE.test(name) && ASYNC_API.indexOf(name) === -1
} }
function isCallbackApi (name) { function isCallbackApi (name) {
...@@ -266,6 +268,19 @@ function shouldPromise (name) { ...@@ -266,6 +268,19 @@ function shouldPromise (name) {
return true return true
} }
/* eslint-disable no-extend-native */
if (!Promise.prototype.finally) {
Promise.prototype.finally = function (callback) {
const promise = this.constructor;
return this.then(
value => promise.resolve(callback()).then(() => value),
reason => promise.resolve(callback()).then(() => {
throw reason
})
)
};
}
function promisify (name, api) { function promisify (name, api) {
if (!shouldPromise(name)) { if (!shouldPromise(name)) {
return api return api
...@@ -279,18 +294,6 @@ function promisify (name, api) { ...@@ -279,18 +294,6 @@ function promisify (name, api) {
success: resolve, success: resolve,
fail: reject fail: reject
}), ...params); }), ...params);
/* eslint-disable no-extend-native */
if (!Promise.prototype.finally) {
Promise.prototype.finally = function (callback) {
const promise = this.constructor;
return this.then(
value => promise.resolve(callback()).then(() => value),
reason => promise.resolve(callback()).then(() => {
throw reason
})
)
};
}
}))) })))
} }
} }
......
...@@ -235,13 +235,15 @@ const SYNC_API_RE = ...@@ -235,13 +235,15 @@ const SYNC_API_RE =
const CONTEXT_API_RE = /^create|Manager$/; const CONTEXT_API_RE = /^create|Manager$/;
const ASYNC_API = ['createBLEConnection'];
const CALLBACK_API_RE = /^on/; const CALLBACK_API_RE = /^on/;
function isContextApi (name) { function isContextApi (name) {
return CONTEXT_API_RE.test(name) return CONTEXT_API_RE.test(name)
} }
function isSyncApi (name) { function isSyncApi (name) {
return SYNC_API_RE.test(name) return SYNC_API_RE.test(name) && ASYNC_API.indexOf(name) === -1
} }
function isCallbackApi (name) { function isCallbackApi (name) {
...@@ -266,6 +268,19 @@ function shouldPromise (name) { ...@@ -266,6 +268,19 @@ function shouldPromise (name) {
return true return true
} }
/* eslint-disable no-extend-native */
if (!Promise.prototype.finally) {
Promise.prototype.finally = function (callback) {
const promise = this.constructor;
return this.then(
value => promise.resolve(callback()).then(() => value),
reason => promise.resolve(callback()).then(() => {
throw reason
})
)
};
}
function promisify (name, api) { function promisify (name, api) {
if (!shouldPromise(name)) { if (!shouldPromise(name)) {
return api return api
...@@ -279,18 +294,6 @@ function promisify (name, api) { ...@@ -279,18 +294,6 @@ function promisify (name, api) {
success: resolve, success: resolve,
fail: reject fail: reject
}), ...params); }), ...params);
/* eslint-disable no-extend-native */
if (!Promise.prototype.finally) {
Promise.prototype.finally = function (callback) {
const promise = this.constructor;
return this.then(
value => promise.resolve(callback()).then(() => value),
reason => promise.resolve(callback()).then(() => {
throw reason
})
)
};
}
}))) })))
} }
} }
......
...@@ -235,13 +235,15 @@ const SYNC_API_RE = ...@@ -235,13 +235,15 @@ const SYNC_API_RE =
const CONTEXT_API_RE = /^create|Manager$/; const CONTEXT_API_RE = /^create|Manager$/;
const ASYNC_API = ['createBLEConnection'];
const CALLBACK_API_RE = /^on/; const CALLBACK_API_RE = /^on/;
function isContextApi (name) { function isContextApi (name) {
return CONTEXT_API_RE.test(name) return CONTEXT_API_RE.test(name)
} }
function isSyncApi (name) { function isSyncApi (name) {
return SYNC_API_RE.test(name) return SYNC_API_RE.test(name) && ASYNC_API.indexOf(name) === -1
} }
function isCallbackApi (name) { function isCallbackApi (name) {
...@@ -266,6 +268,19 @@ function shouldPromise (name) { ...@@ -266,6 +268,19 @@ function shouldPromise (name) {
return true return true
} }
/* eslint-disable no-extend-native */
if (!Promise.prototype.finally) {
Promise.prototype.finally = function (callback) {
const promise = this.constructor;
return this.then(
value => promise.resolve(callback()).then(() => value),
reason => promise.resolve(callback()).then(() => {
throw reason
})
)
};
}
function promisify (name, api) { function promisify (name, api) {
if (!shouldPromise(name)) { if (!shouldPromise(name)) {
return api return api
...@@ -279,18 +294,6 @@ function promisify (name, api) { ...@@ -279,18 +294,6 @@ function promisify (name, api) {
success: resolve, success: resolve,
fail: reject fail: reject
}), ...params); }), ...params);
/* eslint-disable no-extend-native */
if (!Promise.prototype.finally) {
Promise.prototype.finally = function (callback) {
const promise = this.constructor;
return this.then(
value => promise.resolve(callback()).then(() => value),
reason => promise.resolve(callback()).then(() => {
throw reason
})
)
};
}
}))) })))
} }
} }
......
...@@ -235,13 +235,15 @@ const SYNC_API_RE = ...@@ -235,13 +235,15 @@ const SYNC_API_RE =
const CONTEXT_API_RE = /^create|Manager$/; const CONTEXT_API_RE = /^create|Manager$/;
const ASYNC_API = ['createBLEConnection'];
const CALLBACK_API_RE = /^on/; const CALLBACK_API_RE = /^on/;
function isContextApi (name) { function isContextApi (name) {
return CONTEXT_API_RE.test(name) return CONTEXT_API_RE.test(name)
} }
function isSyncApi (name) { function isSyncApi (name) {
return SYNC_API_RE.test(name) return SYNC_API_RE.test(name) && ASYNC_API.indexOf(name) === -1
} }
function isCallbackApi (name) { function isCallbackApi (name) {
...@@ -266,6 +268,19 @@ function shouldPromise (name) { ...@@ -266,6 +268,19 @@ function shouldPromise (name) {
return true return true
} }
/* eslint-disable no-extend-native */
if (!Promise.prototype.finally) {
Promise.prototype.finally = function (callback) {
const promise = this.constructor;
return this.then(
value => promise.resolve(callback()).then(() => value),
reason => promise.resolve(callback()).then(() => {
throw reason
})
)
};
}
function promisify (name, api) { function promisify (name, api) {
if (!shouldPromise(name)) { if (!shouldPromise(name)) {
return api return api
...@@ -279,18 +294,6 @@ function promisify (name, api) { ...@@ -279,18 +294,6 @@ function promisify (name, api) {
success: resolve, success: resolve,
fail: reject fail: reject
}), ...params); }), ...params);
/* eslint-disable no-extend-native */
if (!Promise.prototype.finally) {
Promise.prototype.finally = function (callback) {
const promise = this.constructor;
return this.then(
value => promise.resolve(callback()).then(() => value),
reason => promise.resolve(callback()).then(() => {
throw reason
})
)
};
}
}))) })))
} }
} }
......
...@@ -235,13 +235,15 @@ const SYNC_API_RE = ...@@ -235,13 +235,15 @@ const SYNC_API_RE =
const CONTEXT_API_RE = /^create|Manager$/; const CONTEXT_API_RE = /^create|Manager$/;
const ASYNC_API = ['createBLEConnection'];
const CALLBACK_API_RE = /^on/; const CALLBACK_API_RE = /^on/;
function isContextApi (name) { function isContextApi (name) {
return CONTEXT_API_RE.test(name) return CONTEXT_API_RE.test(name)
} }
function isSyncApi (name) { function isSyncApi (name) {
return SYNC_API_RE.test(name) return SYNC_API_RE.test(name) && ASYNC_API.indexOf(name) === -1
} }
function isCallbackApi (name) { function isCallbackApi (name) {
...@@ -266,6 +268,19 @@ function shouldPromise (name) { ...@@ -266,6 +268,19 @@ function shouldPromise (name) {
return true return true
} }
/* eslint-disable no-extend-native */
if (!Promise.prototype.finally) {
Promise.prototype.finally = function (callback) {
const promise = this.constructor;
return this.then(
value => promise.resolve(callback()).then(() => value),
reason => promise.resolve(callback()).then(() => {
throw reason
})
)
};
}
function promisify (name, api) { function promisify (name, api) {
if (!shouldPromise(name)) { if (!shouldPromise(name)) {
return api return api
...@@ -279,18 +294,6 @@ function promisify (name, api) { ...@@ -279,18 +294,6 @@ function promisify (name, api) {
success: resolve, success: resolve,
fail: reject fail: reject
}), ...params); }), ...params);
/* eslint-disable no-extend-native */
if (!Promise.prototype.finally) {
Promise.prototype.finally = function (callback) {
const promise = this.constructor;
return this.then(
value => promise.resolve(callback()).then(() => value),
reason => promise.resolve(callback()).then(() => {
throw reason
})
)
};
}
}))) })))
} }
} }
......
...@@ -10,7 +10,18 @@ function generatePageCode (pages, pageOptions) { ...@@ -10,7 +10,18 @@ function generatePageCode (pages, pageOptions) {
module.exports = function definePages (appJson) { module.exports = function definePages (appJson) {
return { return {
name: 'define-pages.js', name: 'define-pages.js',
content: ` content: `
if (!Promise.prototype.finally) {
Promise.prototype.finally = function(callback) {
const promise = this.constructor
return this.then(
value => promise.resolve(callback()).then(() => value),
reason => promise.resolve(callback()).then(() => {
throw reason
})
)
}
}
if(uni.restoreGlobal){ if(uni.restoreGlobal){
uni.restoreGlobal(weex,plus,setTimeout,clearTimeout,setInterval,clearInterval) uni.restoreGlobal(weex,plus,setTimeout,clearTimeout,setInterval,clearInterval)
} }
......
...@@ -12,9 +12,9 @@ const SYNC_API_RE = ...@@ -12,9 +12,9 @@ const SYNC_API_RE =
const CONTEXT_API_RE = /^create|Manager$/ const CONTEXT_API_RE = /^create|Manager$/
const TASK_APIS = ['request', 'downloadFile', 'uploadFile', 'connectSocket'] const TASK_APIS = ['request', 'downloadFile', 'uploadFile', 'connectSocket']
const ASYNC_API = ['createBLEConnection'] const ASYNC_API = ['createBLEConnection']
const CALLBACK_API_RE = /^on/ const CALLBACK_API_RE = /^on/
...@@ -51,6 +51,19 @@ export function shouldPromise (name) { ...@@ -51,6 +51,19 @@ export function shouldPromise (name) {
return true return true
} }
/* eslint-disable no-extend-native */
if (!Promise.prototype.finally) {
Promise.prototype.finally = function (callback) {
const promise = this.constructor
return this.then(
value => promise.resolve(callback()).then(() => value),
reason => promise.resolve(callback()).then(() => {
throw reason
})
)
}
}
export function promisify (name, api) { export function promisify (name, api) {
if (!shouldPromise(name)) { if (!shouldPromise(name)) {
return api return api
...@@ -64,18 +77,6 @@ export function promisify (name, api) { ...@@ -64,18 +77,6 @@ export function promisify (name, api) {
success: resolve, success: resolve,
fail: reject fail: reject
}), ...params) }), ...params)
/* eslint-disable no-extend-native */
if (!Promise.prototype.finally) {
Promise.prototype.finally = function (callback) {
const promise = this.constructor
return this.then(
value => promise.resolve(callback()).then(() => value),
reason => promise.resolve(callback()).then(() => {
throw reason
})
)
}
}
}))) })))
} }
} }
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册