対象
この記事は以下のような人を対象にしています。
- Promiseについて調べても、楽にかけるだのasync/awaitだのといった記事ばかりで、結局、どういう風な関数を作ればよいのかわからない。
- 加えて、JavaScript Promiseの本を読んで勉強する時間も気力も無い。
以上
概要
Promiseを返す関数を作って使います。
関数のサンプル
arg1
とarg2
とコールバック関数を引数に取る関数cf
をPromiseでラップした関数af
を以下に示します。
function af(arg1, arg2) {
return new Promise((resolve, reject) => {
cf(arg1, arg2, resolve);
});
}
JavaScript Promiseの本にXHRを使ったサンプルはあるので、socketioを使ったサンプルを以下に示します。
/**
* socketio.emitをして、サーバーからresponseSocketNameの応答が来るのを待つ
* @param{String} socketName 送信するsocket名
* @param{Object} data 送信するデータ
* @param{String} responseSocketName 応答のsocket名
*/
function emit(socketName, data, responseSocketName) {
return new Peomise((resolve, reject) => {
// socketio.on(responseSocketName, (responseData) => {resolve(responseData);});
// でもよいけど、結局することが変わらないので省略
socketio.on(responseSocketName, resolve);
socketio.emit(socketName, data);
});
}
使用するサンプル
こっちはいろんな人が解説しているので軽く。
// 先のemit関数を呼び出します。
// 方法1
emit("requiest", {}, "response").then((responseData ) => {
// 応答があったときの処理
}
// 方法2
const responseData = await emit("requiest", {}, "response");