2017-09-25 10 views
4

Temp.js非同期は、画像の読み込みに

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

anotherfile.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を持っていて、非同期待機を使用して画像のプロパティを取得しようとしましたが、動作していません。逃したものを理解できません。

答えて

8

あなたの問題は、ここではお約束できません

awaitオペレータがPromise

Image.prototype.onloadプロパティを待つために使用されています... the definition for awaitから延び、またあなたはそれを1つずつ割り当てています。あなたがロード後heightプロパティを返すようにしたい場合は、私が代わりにあなたは、次の

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

または、内ならばその値にアクセスするために使用するPromise ...

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

を作成しますasync機能

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

ありがとう@phil、今私は理解しました。 addImageProcessに小さなタイプミスがあります。 – Rahul

+2

@ user7234862ありがとう、固定 – Phil

関連する問題