app.ux异步数据在其他页面获取问题, 求大佬解答-官方
<p>我需要在app.ux里面登录,但是都是异步, 在其他页面获取数据的时候为空, 获取不到, 怎么样才能在其他页面, 获取到app.ux里面异步方法执行完的数据呢? 官方就不能搞个同步吗,太麻烦了</p> 有大佬知道怎么搞吗求回复 <p>希望这个示例对你有帮助// app.ux (使用发布订阅模式)
/**
* 应用级别的配置,供所有页面公用
*/
import axios from 'axios'
const pubSub = {
subscribers: {
any: []
},
subscribe: function(fn, type) {
type = type || 'any';
if (typeof this.subscribers === 'undefined') {
this.subscribers = [];
}
this.subscribers.push(fn);
},
unsubscribe: function(fn, type) {
this.visitSubscribers('unsubscribe', fn, type);
},
publish: function(publication, type) {
this.visitSubscribers('publish', publication, type);
},
visitSubscribers: function(action, arg, type) {
const pubtype = type || 'any';
const subscribers = this.subscribers;
for (let i = 0; i < subscribers.length; i++) {
if (action === 'publish') {
subscribers(arg);
} else {
if (subscribers === arg) {
subscribers.splice(i, 1);
}
}
}
}
};
/* @desc: 注入方法至全局 global,以便页面调用 */
const hook2global = global.__proto__ || global
hook2global.$pubSub = pubSub
export default {
async onCreate() {
const data = await axios('https://webapi.sporttery.cn/gateway/lottery/getHistoryPageListV1.qry?gameNo=350133&provinceId=0&pageSize=30&isVerify=1&pageNo=1')
hook2global.$pubSub.publish(data)
}
}
// 其他页面使用app.ux里面的数据
export default {
onInit(){
$pubSub.subscribe(this.getData)
},
getData(data){
console.log(data)
}
}</p> <p>希望这个示例对你有帮助 // app.ux (使用发布订阅模式) /** * 应用级别的配置,供所有页面公用 */ import axios from 'axios' const pubSub = { subscribers: { any: [] }, subscribe: function(fn, type) { type = type || 'any'; if (typeof this.subscribers === 'undefined') { this.subscribers = []; } this.subscribers.push(fn); }, unsubscribe: function(fn, type) { this.visitSubscribers('unsubscribe', fn, type); }, publish: function(publication, type) { this.visitSubscribers('publish', publication, type); }, visitSubscribers: function(action, arg, type) { const pubtype = type || 'any'; const subscribers = this.subscribers; for (let i = 0; i < subscribers.length; i++) { if (action === 'publish') { subscribers(arg); } else { if (subscribers === arg) { subscribers.splice(i, 1); } } } } }; /* @desc: 注入方法至全局 global,以便页面调用 */ const hook2global = global.__proto__ || global hook2global.$pubSub = pubSub export default { async onCreate() { const data = await axios('https://webapi.sporttery.cn/gateway/lottery/getHistoryPageListV1.qry?gameNo=350133&provinceId=0&pageSize=30&isVerify=1&pageNo=1') hook2global.$pubSub.publish(data) } } // 其他页面使用app.ux里面的数据 export default { onInit(){ $pubSub.subscribe(this.getData) }, getData(data){ console.log(data) } }</p>
页:
[1]