/**
* 单例模式
* 接口请求 若是没有登陆 先登陆
*
*/
var loginInstance = null;
// 这是封装的公共请求
function request() {
return new Promise((resolve, reject) => {
login().then(() => {
resolve()
})
})
}
// 这是请求1
function rq1() {
request().then(() => {
console.log('请求1');
})
}
// 这是请求2
function rq2() {
request().then(() => {
console.log('请求2');
})
}
// 这是请求3
function rq3() {
request().then(() => {
console.log('请求3');
})
}
// 这是登陆请求
function login() {
// 全局只有一个登陆实例 未登陆就先登陆 登陆了就返回登陆实例
if (loginInstance) {
return loginInstance
} else {
loginInstance = new Promise((resolve, reject) => {
console.log('登陆中...');
setTimeout(() => {
console.log('登陆成功');
resolve()
}, 1000);
})
return loginInstance
}
}
// 假设一个页面onLoad中调用了请求1,2,3
rq1()
rq2()
rq3()
// 假设2秒后才登陆成功
setTimeout(() => {
login()
}, 2000);