阿里云OSS SDK for Javascript刚推出时,为了解救Callback Hell,我们积极拥抱 ES6。经过一段时间的使用,收到了很多好评(虽然大部分是给 ES 的),同时也收到了不少抱怨,co
和yield
对于很多用户来说还是有不低的使用门槛。现在,对 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