这几天在 Github 找到了一个在浏览器压缩图片的 JS 脚本
我是 GitHub 链接
现在下到本地开始建个简单的 Demo,但是遇到了这样一个问题
result 是压缩之后的图片以 Blob 的形式返回,但是将代码写入到 html 文件之后就没办法读取到 result,如果将 JS 代码一条一条在 chrome 的控制台输入运行却可以获取 result,并且很奇怪 Compressor 里面能看到 result 是一个 Blob 但是在 Compressor 的梗概那里却是显示着一个 null
1
Jex 2018-11-14 19:50:09 +08:00
因为它是异步的,你为什么不看文档?
|
2
morethansean 2018-11-14 19:59:48 +08:00
@Jex 这感觉是连 demo 都没看么 23333
|
3
IsaacYoung 2018-11-14 20:00:08 +08:00
看见右边那个 info 的蓝色小图标了? 把鼠标放上去 看看提示是什么
|
4
McContax OP @IsaacYoung 显示 value below was evaluated just now,现在正在 Google 搜索 ing
@Jex @morethansean 不是职业前端开发啦,这些事情也是第一次遇到,不好意思啦~ |
5
rbe 2018-11-14 20:34:35 +08:00
浏览器的 console 是异步求值的,不是做前端的确实很可能不知道,楼上不用这么苛责吧?
|
7
McContax OP @rbe
@IsaacYoung 请问有什么办法能够直接访问到重新计算之后的 result 吗?我 Google 了一下有说 JSON.stringify 有说 JSON.parse(obj),但是这两个没办法做到。。 |
8
IsaacYoung 2018-11-14 21:00:28 +08:00 via iPhone 1
@McContax 你看 readme 啊 里面不是有 G 个例子 设置了 success callback,回调函数里面就能拿到数据
|
9
McContax OP @IsaacYoung 非常感谢,我当时看文档的时候只留意 option 里面的 height,width 之类的参数变量,完全没留意到设置了 success 函数,而且刚才思路也偏了,现在能够正常运行了,谢谢
|
10
rbe 2018-11-14 22:35:43 +08:00
浏览器 console 对于一个 obj 是异步求值的,obj 结构复杂的话就无法一次打出来,而 console.log(JSON.stringify(obj)) 相当于把一个对象序列化成字符串再打出来,所以能够达到效果,这个过程是同步的。但是你调用这个库是异步处理你要压缩的东西的,这里用了回调的模式,所以在成功和失败的回调里处理逻辑就好了。
|