如何使用async / await将此回调转换为承诺?

时间:2017-08-21 03:29:21

标签: javascript asynchronous promise async-await

以下函数从url获取并获取图像,加载它并返回其宽度和高度:

function getImageData (url) {
  const img = new Image()
  img.addEventListener('load', function () {
    return { width: this.naturalWidth, height: this.naturalHeight }
  })
  img.src = url
}

问题是,如果我做这样的事情:

ready () {
  console.log(getImageData(this.url))
}

我得到undefined,因为该函数已运行,但尚未加载图像。

如何使用await / async仅在照片已加载并且宽度和高度已经可用时返回值?

2 个答案:

答案 0 :(得分:17)

  

如何使用DBI::DatabaseError: Access denied for user 'testuser'@'120.120.120.120' (using password: YES) / async将此回调函数转换为承诺?

你不是。 As usual, you use the new Promise constructor。那没有语法糖。

await
  

如果仅在照片已加载并且宽度和高度已经可用时如何使用function loadImage(url) { return new Promise((resolve, reject) => { const img = new Image(); img.addEventListener('load', () => resolve(img)); img.addEventListener('error', reject); // don't forget this one img.src = url; }); } / await来记录值?

你可以做到

async

答案 1 :(得分:0)

该库工作得很好-它允许连接到子进程,或者如果需要,可以简单地异步返回结果:https://github.com/expo/spawn-async