Async/Await 函数返回 _40: 0, _65: 0, _55: null, _72: null

Async/Await function returning _40: 0, _65: 0, _55: null, _72: null

我在尝试获取图像的原始大小时从 Async/Await 函数返回了这个 { _40: 0, _65: 0, _55: null, _72: null }。函数用法参考https://www.npmjs.com/package/react-native-image-size

这是我的代码。

getImgSize = async (url) => {
  const {width, height} = await ImageSize.getSize(url);
  const imgSize = { width: width, height: height }

  console.log(imgSize) // result is { width: 950, height: 634 }

  return imgSize;
}

function getImage(){
  var imgSize = getImgSize("https://img.purch.com/w/660/aHR0cDovL3d3dy5saXZlc2NpZW5jZS5jb20vaW1hZ2VzL2kvMDAwLzEwNC84MzAvb3JpZ2luYWwvc2h1dHRlcnN0b2NrXzExMTA1NzIxNTkuanBn");

  console.log(imgSize) // result after returned { _40: 0, _65: 0, _55: null, _72: null }
}

我希望结果类似于 { width: 950, height: 634 } 但我提到的结果却被返回了。

试一试

getImgSize("<Image URL>")
.then((imgSize)=>console.log(imgSize))

或者放在async/await

getImage = async () => {
  var imgSize = await getImgSize("<Image URL>");
  console.log(imgSize);
}

您必须将 async 与 await 一起使用或使用 then() => 反对它让我们看看它并在需要等待的地方使用它。

您需要添加awaitasync功能:

 getImgSize = async (url) => {
      const {width, height} = await ImageSize.getSize(url);
      const imgSize = { width: width, height: height }
      console.log(imgSize) // result is { width: 950, height: 634 }
      return imgSize;
}

async function getImage(){
  var imgSize = await getImgSize("https://img.purch.com/w/660/aHR0cDovL3d3dy5saXZlc2NpZW5jZS5jb20vaW1hZ2VzL2kvMDAwLzEwNC84MzAvb3JpZ2luYWwvc2h1dHRlcnN0b2NrXzExMTA1NzIxNTkuanBn");
  console.log(imgSize) // result after returned { _40: 0, _65: 0, _55: null, _72: null }
}

您正在调用一个 async 函数,这意味着它是一个承诺。你得等结果。

所以要么使用await

getImage = async () => {
  var imgSize = await getImgSize("https://img.purch.com/w/660/aHR0cDovL3d3dy5saXZlc2NpZW5jZS5jb20vaW1hZ2VzL2kvMDAwLzEwNC84MzAvb3JpZ2luYWwvc2h1dHRlcnN0b2NrXzExMTA1NzIxNTkuanBn");

  console.log(imgSize);
}

或者这样处理

getImage = () => {
    getImgSize('https://img.purch.com/w/660/aHR0cDovL3d3dy5saXZlc2NpZW5jZS5jb20vaW1hZ2VzL2kvMDAwLzEwNC84MzAvb3JpZ2luYWwvc2h1dHRlcnN0b2NrXzExMTA1NzIxNTkuanBn').then((imgSize) => {
      console.log(imgSize);
    });
}