イメージが網膜でポートレート比であるかどうかを確認するために基本的なチェックをしています。私はすべての機能を完全に正常に動作しているチェックしている。私の問題は、最後の関数でブール値を返すことになっていることです。私のチェックでは返されるのは[object Promise]
です。私は約束を解決するとき、なぜ私のブール値を返さないのか分かりません。私は.then(res => console.log(res))
を実行するとプロミスが戻ってきている[オブジェクト約束]
は、それは私のブール応答を出力しますが、約束を返す関数getImageMeta()
だけを返し、私は約束を実際に解決されていないと思わせる[object Promise]
います。
もし私が偉大な助けを得ることができたら!
/************************************
Check if image is retina portrait
************************************/
const checkIfPortrait = src => !isRetina(src) ? false : getImageMeta(src).then(res => res);
const isRetina = src => src.indexOf('@2x') !== -1;
const isPortrait = ({ naturalWidth, naturalHeight }) => naturalHeight > naturalWidth ? true : false;
function getImageMeta (src) {
const img = new Image();
img.src = src;
return new Promise((resolve, reject) => {
return img.addEventListener("load", function() {
return resolve(isPortrait(this));
}, false);
});
}
export { checkIfPortrait }
これは私が関数を呼び出しています方法です:
<img src={media[i].image} alt={media[i].alt} data-portrait={checkIfPortrait(media[i].image)} />
が見ている[MDN - 約束を使用する](https://developer.mozilla.org/をen-US/docs/Web/JavaScript/Guide/Using_promises)を参照してください。 '。(res => res) 'は重複しているので、必要ありません。 * "私の問題は、最終的な関数でブール値を返すことになっているということです" *これは不可能です。非同期プロセスを同期プロセスに変換することはできません。 –