[解決済み】async/awaitでファイルを正しく読み込むには?
2022-04-20 01:55:46
質問
がわかりません。
async
/
await
が動作します。少しは理解できるのですが、うまくいきません。
function loadMonoCounter() {
fs.readFileSync("monolitic.txt", "binary", async function(err, data) {
return await new Buffer( data);
});
}
module.exports.read = function() {
console.log(loadMonoCounter());
};
を使えばいいんだろうけど
readFileSync
しかし、もしそうしたら、私は決して理解できないでしょう。
async
/
await
と言って、問題をうやむやにします。
目標:コール
loadMonoCounter()
で、ファイルの内容を返します。
そのファイルは
incrementMonoCounter()
が呼び出されます(ページロード毎)。このファイルには、バッファのダンプがバイナリで含まれており、SSDに保存されています。
何をやってもエラーになったり
undefined
がコンソールに表示されます。
解決方法は?
使用方法
await
/
async
の場合、プロミスを返すメソッドが必要です。コアAPIの関数は、以下のようなラッパーを使わないと、そのようなことはしません。
promisify
:
const fs = require('fs');
const util = require('util');
// Convert fs.readFile into Promise version of same
const readFile = util.promisify(fs.readFile);
function getStuff() {
return readFile('test');
}
// Can't use `await` outside of an async function so you need to chain
// with then()
getStuff().then(data => {
console.log(data);
})
メモとして
readFileSync
はコールバックを受け取らず、データを返すか例外を投げます。あなたが提供したその関数が無視され、実際の戻り値をキャプチャしていないため、あなたは望む値を得ることができません。
関連
-
[解決済み] E: npm パッケージを見つけることができません。
-
[解決済み] nvm は npm config の "prefix" オプションと互換性がありません。
-
[解決済み] forEachループでasync/awaitを使用する
-
[解決済み] async」と「await」の使い方とタイミング
-
[解決済み] Node.jsで現在のスクリプトのパスを取得するにはどうしたらいいですか?
-
[解決済み] Node.JSを使用して、JSONファイルを(サーバー)メモリに読み込むにはどうすればよいですか?
-
[解決済み] 非同期Task<T>メソッドを同期的に実行するにはどうしたらいいですか?
-
[解決済み] async/await関数を並列に呼び出す
-
[解決済み] async/await - タスクとvoidをいつ返すか?
-
[解決済み] async/await構文で拒否する方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Node.js getaddrinfo ENOTFOUND
-
[解決済み] (node:63208) DeprecationWarning: collection.ensureIndex は非推奨です。代わりにcreateIndexesを使用してください [重複]。
-
[解決済み】ブロックスコープの宣言は、ストリクトモード以外ではまだサポートされていません。
-
[解決済み】E11000重複キーエラー mongodb mongooseのインデックス
-
[解決済み】POSTできない/expressを使用するとエラーが発生する
-
[解決済み] EventEmitter のメモリリークの可能性が検出された
-
[解決済み] nodejsでfindAllのソート順を続編にする
-
[解決済み] TypeErrorです。リクエストパスにエスケープされていない文字が含まれています。
-
[解決済み] express は `body-parser deprecated undefined extended` としてエラーを投げます。
-
[解決済み] バルク更新を行う。