util.promisifyでコールバックスタイルからPromiseに変換

node.jsが提供するutil.promisifyの使い方を記載します。

async/awaitの使い方で既に利用しています。

util.promisify?

コールバックを必要とする関数をPromiseに変換するutilです。

制約

Promise化する対象の関数にたいして、以下制約があります。

  • 対象の関数の最後の引数がコールバック関数であること
  • コールバック関数の引数は(error, value)であること

使い方

fs.readFilePromiseに変換し、awaitで処理を待っている例です。

'use strict'

const { promisify } = require('util');
const fs = require('fs');
const AWS = require('aws-sdk');
AWS.config.loadFromPath('./config/credentials.json');
AWS.config.update({ region: 'ap-northeast-1' });

const PARAMETER_FILE_PATH = './getItemParams.json';
const dynamodb = new AWS.DynamoDB();

async function getItem() {
try {
const fileData = await promisify(fs.readFile)(PARAMETER_FILE_PATH, 'utf8');
const data = await dynamodb.getItem(JSON.parse(fileData)).promise();
console.log(JSON.stringify(data));
} catch (error) {
console.log(error);
}
}

getItem();

コメント

タイトルとURLをコピーしました