观察者模式
发布日期:2021-05-07 06:43:29 浏览次数:22 分类:技术文章

本文共 1257 字,大约阅读时间需要 4 分钟。

//观察者模式实现异步function create(fn){       let ret = false    return ({    next, complete, error })=>{           function nextFn(...args){               if(ret){                   return            }            next(...args)        }        function completeFn(...args){               complete(...args)            ret = true        }        function errorFn(...args){               error(...args)        }        fn({               next: nextFn,            complete: completeFn,            error: errorFn        })        return ()=>(ret = true)    }}/** *观察者 * observerable 等于({ next, complete, error })=>{ *      function nextFn ... *      function complete ... *      function errorFn ... *      (observer=>{ *          setTimeout(()=>{ observer.next(1) }, 1000) *          observer.next(2) *          observer.complete(3) *      })() 执行 *      return ()=>( ret = true ) * } * */let observerable = create(observer => {       setTimeout(()=>{           observer.next(1)    }, 1000)    observer.next(2)    observer.complete(3)})/** * 被观察者 */const subject = {       next: value=>{           console.log(value)    },    complete: console.log,    error: console.log}let unsubscribe = observerable(subject)

结果:

2
3
之所以这样是因为complete调用之后把ret设置为true所以在1秒后调用的next方法不能执行

上一篇:物理层|计算机网络
下一篇:no module named scipy 的解决办法|报错

发表评论

最新留言

路过,博主的博客真漂亮。。
[***.116.15.85]2025年04月13日 01时46分45秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章