コールバックベースのAPIをPromise化する
function delay(ms: number): Promise<void> {
return new Promise(resolve => setTimeout(resolve, ms));
}
// コールバックAPIをラップ
function readFile(path: string): Promise<string> {
return new Promise((resolve, reject) => {
fs.readFile(path, 'utf8', (err, data) => {
if (err) reject(err);
else resolve(data);
});
});
}
await delay(1000); // 1秒待機Node.jsのutil.promisifyを使うとコールバックAPIを自動でPromise化できる。手動でPromiseを作る場合はrejectを必ず実装する。