javascript - 图片加载异步等待

标签 javascript ecmascript-6 async-await

Temp.js

export default class Temp {
    async addImageProcess(src){
        let img = new Image();
        img.src = src;
        return img.onload = await function(){
          return this.height;
        }
    }
}

另一个文件.js

import Temp from '../../classes/Temp'
let tmp = new Temp()

imageUrl ="https://www.google.co.in/images/branding/googlelogo/2x/googlelogo_color_120x44dp.png"
let image = tmp.addImageProcess(imageUrl);
console.log(image)

上面是我的代码。我有一个图像 url 并尝试使用 async await 获取图像的属性,但它不起作用,不明白我错过了什么。

最佳答案

您的问题来自 the definition for await ...

The await operator is used to wait for a Promise

Image.prototype.onload 属性不是一个 promise ,您也没有给它赋值。如果您想在加载后返回 height 属性,我会创建一个 Promise ...

addImageProcess(src){
  return new Promise((resolve, reject) => {
    let img = new Image()
    img.onload = () => resolve(img.height)
    img.onerror = reject
    img.src = src
  })
}

然后您将使用以下内容来访问该值

tmp.addImageProcess(imageUrl).then(height => {
  console.log(height)
})

或者,如果在 async 函数中

async function logImageHeight(imageUrl) {
  console.log('height', await tmp.addImageProcess(imageUrl))
}

关于javascript - 图片加载异步等待,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46399223/

相关文章:

javascript - ReactJS中使用Fetch调用POST API时出现错误415

javascript - 通过逻辑运算符分配变量值的 typescript 仅使用后一种类型

javascript - 这个箭头函数如何不给出任何错误?

javascript - 在 php 和 html 中重写/屏蔽 url 地址

javascript - 将一个 div 放在父 div 的底部

javascript - 在 php 函数内部时,Sql 查询不起作用

javascript - 改变 React 父组件状态

c# - 为什么在使用 ContinueWith 时会收到编译器警告?

javascript - 如何使链式 firebase 查询异步

javascript - ES 2017 : async function vs AsyncFunction(object) vs async function expression