如何在函数 JavaScript/NodeJS 中返回函数

how to return a function inside a function javascript/nodejs?

本文关键字:函数 NodeJS 返回 JavaScript      更新时间:2023-09-26

我正在尝试返回我在getsignedURL中获得的URL。 当我尝试此 url1 未定义

function getPublicUrl(filename) {
          var url1;
          var file = bucket.file(filename);
          file.getSignedUrl({
              action: 'read',
              expires: '03-17-2025'
          }, function (err, url) {
              if (err) {
                  console.error(err);
                  return;
              } else {
              url1  = url
                  console.log(url);
              }
          });
       return url1;
 }

然后在另一个函数中,我会调用getpublicurl

stream.on('finish', function() {
          req.file.cloudStorageObject = gcsname;
          req.file.cloudStoragePublicUrl = getPublicUrl(gcsname);

file.getSignedUrl似乎是一个异步函数,你可以在getPublicUrl中使用ES6 Promise,有点像这样

function getPublicUrl(filename) {
  return new Promise(function(resolve, reject) {
    var file = bucket.file(filename);
    file.getSignedUrl({
      action: 'read',
      expires: '03-17-2025'
    }, function(err, url) {
      if (err) {
        reject(err);
      } else {
        resolve(url);
      }
    });
  });
}
stream.on('finish', function() {
  getPublicUrl(gcsname).then(function(url) {
    console.log(url);
    req.file.cloudStorageObject = gcsname;
    req.file.cloudStoragePublicUrl = url;
  }).catch(function(err) {
    console.log(err);
  });
});