私は約束事を扱う際に問題があります。 最初はこのように機能を設定していましたが、問題なく動作しました。非同期/プロミス保留中エラーが発生する
オリジナル:
const request = require("request-promise");
async() => {
const URL_HIDDEN = "...";
let info = await request(URL_HIDDEN);
info = JSON.parse(info).response.players[0];
let playtime = await request(URL_HIDDEN);
playtime = JSON.parse(playtime).response.games;
console.log(info);
console.log(playtime);
}
これは短縮バージョンですが、基本的に私はちょうどスチームAPIから情報を要求しています。どちらの変数もすべてのデータが問題なく印刷されますが、以下のリファクタを実行するとその変数が変わります。
はリファクタリング:
const middleware = require("../middleware");
async() => {
const URL_HIDDEN = "...";
let requests = middleware.requestURI(URL_HIDDEN);
console.log(requests);
}
と私は別のファイルに別の関数で扱うすべての要求を始めました。
const request = require("request-promise");
middlewareObj.requestURI = async (URL_HIDDEN) => {
console.log("1");
let info = await request(URL_HIDDEN);
info = JSON.parse(info).response.players[0];
console.log("2");
let playtime = await request(URL_HIDDEN);
playtime = JSON.parse(playtime).response.games;
console.log("3");
return [{ info }, { playtime }];
};
すべての変数をソートしたら、配列を返すようにします。しかし、一度実行すると、これはコンソールに表示されます。
1
Promise { <pending> }
2
3
私はそれをリファクタリングたら、それは保留中の約束を印刷している理由の任意のアイデア?元に
が、それはあなたの "リファクタリング" のコードで
かかわらず、この不自然な例では、それは明らかではありませんので、何の問題? – Ivan
配列に実際に何が記録されているのではなく、約束を保留しています。配列 – Phillip
の各変数には多くの情報があります。 'requestURI'は' async'で 'console.log(要求)'が実行された時点では完了していないからです。 – Ivan