头图

我们有的时候需要调用函数返回一个Promise,例如腾讯云点播vod-js-sdk-v6
在实例化云点播new TcVod()的时候必须传入一个Promise,此时我们就可以通过函数包装,调用得时候拿到Promise函数,因为直接创建Promise函数会立即调用执行,所以必须得用函数包装一层。

// 定义一个函数,该函数返回一个 Promise
function createProcessStringFunction(str) {
  return function() {
    return new Promise((resolve, reject) => {
      // 在这里可以对传入的字符串进行处理
      // 这里简单地将字符串原样返回
      resolve(str);
    });
  };
}

// 外部传入的字符串
const externalString = "这是从外部传入的字符串";

// 创建函数并传入外部字符串
const processStringFunction = createProcessStringFunction(externalString);

// 调用返回的函数,得到函数,该函数内部是一个 Promise
const processStringPromise = processStringFunction();

// 处理 Promise 的结果
processStringPromise
  .then(result => {
    console.log('处理后的字符串:', result);
  })
  .catch(error => {
    console.error('处理字符串时出错:', error);
  });

另外你也可以使用async的简约写法

export const getSignature = async () => {
  return new Promise((resolve, reject) => {
    // 省略其它...

    resolve(signature); // 返回签名
  });
};

const tcVod = new TcVod({
    getSignature: getSignature, // 前文中所述的获取上传签名的函数,直接通过Promise传入c
  });

兔子先森
465 声望213 粉丝

致力于新技术的推广与优秀技术的普及。