rockuw
V2EX  ›  Node.js

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

  •  
  •   rockuw · Apr 14, 2016 · 6593 views
  •   You need to sign in to view this topic
    This topic created in 3814 days ago, the information mentioned may be changed or developed.

    阿里云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 replies    2016-04-14 21:52:11 +08:00
    rockuw
        1
    rockuw  
    OP
       Apr 14, 2016
    @Livid

    script 代码乱掉了
    Livid
        2
    Livid  
    MOD
    PRO
       Apr 14, 2016
    @rockuw 谢谢反馈。我们看一下这个 ```html 的问题。
    Livid
        3
    Livid  
    MOD
    PRO
       Apr 14, 2016
    @rockuw 已经修复。再次感谢你的反馈。
    rockuw
        4
    rockuw  
    OP
       Apr 14, 2016 via iPhone
    @Livid 赞速度!
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1012 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 18:53 · PVG 02:53 · LAX 11:53 · JFK 14:53
    ♥ Do have faith in what you're doing.