V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
McContax
V2EX  ›  问与答

关于 JS 前端的一个疑问(涉及 Blob)

  •  
  •   McContax · 2018-11-14 19:42:02 +08:00 · 2016 次点击
    这是一个创建于 2227 天前的主题,其中的信息可能已经有所发展或是发生改变。

    这几天在 Github 找到了一个在浏览器压缩图片的 JS 脚本
    我是 GitHub 链接
    现在下到本地开始建个简单的 Demo,但是遇到了这样一个问题
    这是图片
    result 是压缩之后的图片以 Blob 的形式返回,但是将代码写入到 html 文件之后就没办法读取到 result,如果将 JS 代码一条一条在 chrome 的控制台输入运行却可以获取 result,并且很奇怪 Compressor 里面能看到 result 是一个 Blob 但是在 Compressor 的梗概那里却是显示着一个 null

    10 条回复    2018-11-14 22:35:43 +08:00
    Jex
        1
    Jex  
       2018-11-14 19:50:09 +08:00
    因为它是异步的,你为什么不看文档?
    morethansean
        2
    morethansean  
       2018-11-14 19:59:48 +08:00
    @Jex 这感觉是连 demo 都没看么 23333
    IsaacYoung
        3
    IsaacYoung  
       2018-11-14 20:00:08 +08:00
    看见右边那个 info 的蓝色小图标了? 把鼠标放上去 看看提示是什么
    McContax
        4
    McContax  
    OP
       2018-11-14 20:28:46 +08:00
    @IsaacYoung 显示 value below was evaluated just now,现在正在 Google 搜索 ing

    @Jex
    @morethansean 不是职业前端开发啦,这些事情也是第一次遇到,不好意思啦~
    rbe
        5
    rbe  
       2018-11-14 20:34:35 +08:00
    浏览器的 console 是异步求值的,不是做前端的确实很可能不知道,楼上不用这么苛责吧?
    azh7138m
        6
    azh7138m  
       2018-11-14 20:40:19 +08:00 via Android
    @rbe 1 楼说的是那个库是异步处理的
    做题前要认真读题
    McContax
        7
    McContax  
    OP
       2018-11-14 20:44:04 +08:00
    @rbe
    @IsaacYoung 请问有什么办法能够直接访问到重新计算之后的 result 吗?我 Google 了一下有说 JSON.stringify 有说 JSON.parse(obj),但是这两个没办法做到。。
    IsaacYoung
        8
    IsaacYoung  
       2018-11-14 21:00:28 +08:00 via iPhone   ❤️ 1
    @McContax 你看 readme 啊 里面不是有 G 个例子 设置了 success callback,回调函数里面就能拿到数据
    McContax
        9
    McContax  
    OP
       2018-11-14 21:27:46 +08:00
    @IsaacYoung 非常感谢,我当时看文档的时候只留意 option 里面的 height,width 之类的参数变量,完全没留意到设置了 success 函数,而且刚才思路也偏了,现在能够正常运行了,谢谢
    rbe
        10
    rbe  
       2018-11-14 22:35:43 +08:00
    浏览器 console 对于一个 obj 是异步求值的,obj 结构复杂的话就无法一次打出来,而 console.log(JSON.stringify(obj)) 相当于把一个对象序列化成字符串再打出来,所以能够达到效果,这个过程是同步的。但是你调用这个库是异步处理你要压缩的东西的,这里用了回调的模式,所以在成功和失败的回调里处理逻辑就好了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1025 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 21:37 · PVG 05:37 · LAX 13:37 · JFK 16:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.