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

2016-04-14 20:21:36 +08:00
 rockuw

阿里云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 还有众多的优化,欢迎试用:

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

5321 次点击
所在节点    Node.js
4 条回复
rockuw
2016-04-14 20:25:56 +08:00
@Livid

script 代码乱掉了
Livid
2016-04-14 20:29:29 +08:00
@rockuw 谢谢反馈。我们看一下这个 ```html 的问题。
Livid
2016-04-14 21:06:23 +08:00
@rockuw 已经修复。再次感谢你的反馈。
rockuw
2016-04-14 21:52:11 +08:00
@Livid 赞速度!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/271117

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX