V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
rockuw
V2EX  ›  Node.js

倾听用户: OSS JavaScript SDK 支持 callback 方式

  •  
  •   rockuw · 2016-04-14 20:21:36 +08:00 · 5480 次点击
    这是一个创建于 3147 天前的主题,其中的信息可能已经有所发展或是发生改变。

    阿里云OSS SDK for JavaScript刚推出时,为了解救Callback Hell,我们积极拥抱 ES6。经过一段时间的使用,收到了很多好评(虽然大部分是给 ES 的),同时也收到了不少抱怨,coyield对于很多用户来说还是有不低的使用门槛。现在,对 callback 情有独钟的朋友们,也可以愉快地使用 OSS js sdk 了:

    安装

    # >= 4.3.0
    npm install ali-oss
    

    使用:

    var OSS = require('ali-oss').Wrapper;
    
    var client = new OSS({
      region: 'oss-cn-hangzhou',
      accessKeyId: '<access-key-id>',
      accessKeySecret: '<access-key-secret>',
      bucket: '<bucket-name>'
    });
    
    client.list().then(function (result) {
      console.log(result.objects);
    }).catch(function (err) {
      console.error(err);
    });
    

    使用Wrapper构造出来的OSS对象拥有原来的所有接口,只是把原来的 generator function 换成了普通的函数,并且返回一个Promise,通过.then()处理异步结果,通过.catch()处理错误。当然原来的使用方式依然支持。

    Promise 的使用与 Callback 接近,但是却可以更加灵活。例如对于多层嵌套的 callback ,可以使用Promise chaining的方式让代码更直观:

    // 上传一个文件,成功后下载这个文件
    client.put('object', '/tmp/file').then(function (val) {
      console.log(val.res);
      return client.get('object');
    }).then(function (val) {
      console.log(val.res);
      console.log(val.content.toString());
    });
    

    浏览器使用也更方便了:

    <script src="http://gosspublic.alicdn.com/aliyun-oss-sdk.min.js"></script>
    <script type="text/javascript">
      var client = new OSS.Wrapper({
        region: 'oss-cn-hangzhou',
        accessKeyId: '<access-key-id>',
        accessKeySecret: '<access-key-secret>',
        bucket: '<bucket-name>'
      });
      
      client.list().then(function (result) {
        console.log(result.objects);
      });
    </script>
    

    一个完整的例子可以参考: https://github.com/rockuw/oss-in-browser

    除此之外, SDK 还有众多的优化,欢迎试用:

    • 简化浏览器版本体积,从 1.1MB 下降到 360KB 。#94
    • 支持断点续传。#80
    • 更多 bug fix 及优化见:changelog

    项目地址(欢迎 fork/star/pr ): https://github.com/ali-sdk/ali-oss

    4 条回复    2016-04-14 21:52:11 +08:00
    rockuw
        1
    rockuw  
    OP
       2016-04-14 20:25:56 +08:00
    @Livid

    script 代码乱掉了
    Livid
        2
    Livid  
    MOD
       2016-04-14 20:29:29 +08:00
    @rockuw 谢谢反馈。我们看一下这个 ```html 的问题。
    Livid
        3
    Livid  
    MOD
       2016-04-14 21:06:23 +08:00
    @rockuw 已经修复。再次感谢你的反馈。
    rockuw
        4
    rockuw  
    OP
       2016-04-14 21:52:11 +08:00 via iPhone
    @Livid 赞速度!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1706 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 16:46 · PVG 00:46 · LAX 08:46 · JFK 11:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.