LoginSignup
2
2

More than 3 years have passed since last update.

Promiseを返す関数を作る

Last updated at Posted at 2018-12-12

対象

この記事は以下のような人を対象にしています。

  • Promiseについて調べても、楽にかけるだのasync/awaitだのといった記事ばかりで、結局、どういう風な関数を作ればよいのかわからない。
  • 加えて、JavaScript Promiseの本を読んで勉強する時間も気力も無い。

以上

概要

Promiseを返す関数を作って使います。

関数のサンプル

arg1arg2とコールバック関数を引数に取る関数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");
2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2