章节
问答
课签
笔记
评论
占位
占位

场景切换

场景用页面的切换都是在每个场景动作结束后自动切换到另一个场景。一般来说在代码设计上尽量不要让不相关的代码耦合,所以场景之间尽量不要直接调用另外一个场景代码。常规的来说,一般抽出到更上层通信了,提供一个统一的接口让应用的不同部分进行通信

这里具体看下右边代码区域christmas.js中的代码

页面类pageA、pageB、pageC都提供一个完成的回调函数,常规来说,因为有依赖所以就会有回调嵌套的问题。对了,可能想起来另一个解决方法 Deferred了,运用的思路其实差不多,但是这里更为直接的我引入了Observer模式

new pageA(function() {
    new pageB(function() {
        new pageC(function() {
            //执行下一个
        })
    })
})

给每个场景对象订阅一个"完成"的事件,然后在每个场景运行结束发派发这个"完成事件"

订阅场景pageA完成事件

observer.subscribe("completeA", function() {
   //做一些是
})

触发场景pageA完成事件

new pageA(function() {
    observer.publish("completeA"); //触发
})

这里其实是一对一的关系,效果还不是很明显,如果是对一多的关系,比如场景完成后,我们可以注册很多的事件

总的来说,观察者模式所做的工作就是在解耦,让耦合的双方都依赖于抽象,而不是依赖于具体。从而使得各自的变化都不会影响到另一边的变化。

任务

christmas.js中,通过观察者模式的处理,切面的切换都是通过事件通知。

请参考页面A切换到页面B的代码,触发B页面的代码

然后在代码56行处填写页面B切换到页面C的代码,然后触发pageC页面

?不会了怎么办

    observer.subscribe("completeB", function() {
        changePage($pageC, "effect-in", function() {
            observer.publish("pageC");
        })
    })

||
1
2
<!DOCTYPE html>
<html>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1
2
/**
*
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1
2
/**
*
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1
function pageA
    (callback)
    {
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1
2
function pageB
    (callback)
    {
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1
function pageC
    (callback) {
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1
2
*{
margin: 0;
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
提交
重置代码
||

请验证,完成请求

由于请求次数过多,请先验证,完成再次请求

加群二维码

打开微信扫码自动绑定

您还未绑定服务号

绑定后可得到

  • · 粉丝专属优惠福利
  • · 大咖直播交流干货
  • · 课程更新,问题答复提醒
  • · 账号支付安全提醒

收藏课程后,能更快找到我哦~

使用 Ctrl+D 可将课程添加到书签

邀请您关注公众号
关注后,及时获悉本课程动态

举报

0/150
提交
取消
全部 精华 我要发布

最赞回答 / 醒醒鱼
静音就可以了,Chrome 66为了避免标签产生随机噪音。<video muted></video>

已采纳回答 / lalala德玛西亚
completeA / completeB只是用来告诉后面的回调函数,“我的事已经完成了“,这只是个代号,你把它写成其他名字都可以。例如 A/ B    ...随便什么名字都行

最新回答 / lalala德玛西亚
额。。。你要总体的去看,如果你学过 java的话,就应该很好理解。

最新回答 / 以己度人4275978
观察者和目标是单向依赖的,只有观察者依赖于目标,而目标是不会依赖于观察者的,观察者可以可有多个

最新回答 / 上衫原
试了一下 直接跳到c的实现回调了

最新回答 / 上衫原
0.0 没有定时器 模拟不了异步吧

最新回答 / qq_菜鸟叔叔
按钮点击一下后就是被观察者所观察到了,然后就是一环套一环的发布、触发,是obsever的功劳。

已采纳回答 / 啊哈哦
http://www.codeceo.com/article/javascript-observer-pattern.html,这个网页解析的比较清楚
全部 我要发布
最热 最新
只看我的

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

账号登录 验证码登录

遇到问题
忘记密码

代码语言