promise的一些应用案例
一些简单的使用
- 具体参考 阮一峰老师 Promise 对象
const delay = ms => new Promise((resolve) => {
setTimeout(resolve, ms)
});
Promise.all(
configList.map(itemConfig => {
if (typeof itemConfig == "string") {
return get(itemConfig);
}
return request(itemConfig);
})
)
Axios源码里面的request使用Promise的例实现一个interceptors
Axios.prototype.request = function request(config) {
/*eslint no-param-reassign:0*/
// Allow for axios('example/url'[, config]) a la fetch API
if (typeof config === 'string') {
config = utils.merge({
url: arguments[0]
}, arguments[1]);
}
config = utils.merge(defaults, {method: 'get'}, this.defaults, config);
config.method = config.method.toLowerCase();
// Hook up interceptors middleware
var chain = [dispatchRequest, undefined];
var promise = Promise.resolve(config);
this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {
chain.unshift(interceptor.fulfilled, interceptor.rejected);
});
this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {
chain.push(interceptor.fulfilled, interceptor.rejected);
});
while (chain.length) {
promise = promise.then(chain.shift(), chain.shift());
}
return promise;
};
antd里面Model使用Promise案例代码
待补充。。。