Coder Social home page Coder Social logo

Comments (13)

swy1996 avatar swy1996 commented on July 22, 2024 3

包裹一层promise就好了 我的解决方案

let data = await new Promise((res, rej) => {
	cos.putObject({},
	function(err, data) {
		if(err) {
			rej(err)
		} else {
			res(data)
		}
	})
})

from cos-nodejs-sdk-v5.

firede avatar firede commented on July 22, 2024 1

没有官方的 Promise 的支持是挺麻烦的,自己改造吧:

const { promisify } = require("util")

// 你的 COS 实例
const cos = new COS({ /* ... */ })

// 将 promisify 后的方法挂到实例上
cos.pHeadBucket = promisify(cos.headBucket)

// Promise 风格示例
cos.pHeadBucket(params)
  .then(res => console.log(res))
  .catch(err => console.error(err))

// async/await 风格示例
async function yourAsyncFn() {
  const res = await cos.pHeadBucket(params)
  console.log(res)
}
yourAsyncFn().catch(err => console.log(err))

@carsonxu 感觉这问题挺常见,要不加到文档里?

from cos-nodejs-sdk-v5.

carsonxu avatar carsonxu commented on July 22, 2024

谢谢反馈,有考虑过支持 Promise 格式,但优先级不高,暂未支持,我们后续再评估下。

from cos-nodejs-sdk-v5.

ypli0629 avatar ypli0629 commented on July 22, 2024

@carsonxu 还没评估好?

from cos-nodejs-sdk-v5.

poppinlp avatar poppinlp commented on July 22, 2024

@carsonxu
Hi. 不知道这边评估的如何了呢?因为最近在项目中有使用到,所以也会有所期望。
如果你们评估觉得 OK 的话,愿意一起讨论方案和后续实现,如果需要帮忙的话。:)

from cos-nodejs-sdk-v5.

yq612 avatar yq612 commented on July 22, 2024

这个问题挺常见的,使用util的promisify 对api进行改造即可。
阿里和腾讯都不支持promise,七牛云就可以....

from cos-nodejs-sdk-v5.

Azero-NG avatar Azero-NG commented on July 22, 2024

同需要支持promise

from cos-nodejs-sdk-v5.

greenhat616 avatar greenhat616 commented on July 22, 2024

@xinayu 补充一下,貌似阿里云的支持了。我使用阿里云邮件推送(Aliyun DirectMail)的官方SDK,已经支持 Promise,UPYUN 也支持了。目前就腾讯这儿还不支持:(

from cos-nodejs-sdk-v5.

xsephiroth avatar xsephiroth commented on July 22, 2024

写个builder

const cosPromise = fn => params => new Promise((resolve, reject) => {
  fn(params, (err, data) =>
    err ? reject(err) : resolve(data)
  )
})

const cosGetObject = cosPromise(cos.getObject.bind(cos));
const cosPutObject = cosPromise(cos.putObject.bind(cos));
const cosDeleteObject = cosPromise(cos.deleteObject.bind(cos));

from cos-nodejs-sdk-v5.

carsonxu avatar carsonxu commented on July 22, 2024

已支持 Promise 和 await 调用 v2.8.0

from cos-nodejs-sdk-v5.

Erchoc avatar Erchoc commented on July 22, 2024

已支持 Promise 和 await 调用 v2.8.0

大兄弟,为啥 2.9.1 又无法使用 await 了呢?

from cos-nodejs-sdk-v5.

carsonxu avatar carsonxu commented on July 22, 2024

支持的,你是不是传入了callback?

from cos-nodejs-sdk-v5.

carsonxu avatar carsonxu commented on July 22, 2024
// test Promsise
cos.headBucket({
    Bucket: config.Bucket,
    Region: config.Region
}).then(data => {
    console.log('Promise:', data);
});

// test await
async function test() {
    const data = await cos.headBucket({
        Bucket: config.Bucket,
        Region: config.Region
    });
    console.log('await:', data);
}
test();

@Erchoc 这两个都可用,是遇到什么问题导致调用失败?

from cos-nodejs-sdk-v5.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.