情報アイランド

「情報を制する者は世界を制す」をモットーに様々な情報を提供することを目指すブログです。現在はプログラミング関連情報が多めですが、投資関連情報も取り扱っていきたいです。

Node.jsで任意時間後に完了状態になるプロミスを作成する

任意時間後に完了状態になるプロミスを作成するにはプロミスクラスのdelay関数を使用します。

delay関数は下のプロミスクラスで提供されています(ただし、qモジュールの場合、q.delay関数となります)。

  • bluebirdクラス
  • q.Promiseクラス

bluebirdクラス

var bluebird = require('bluebird');

var p = bluebird.delay(1000, 'xxx');

第1引数に時間をミリ秒単位で指定します。

第2引数にプロミスの結果を指定します。この引数は指定しなくても構いません。

返り値としてプロミスが得られます。

q.Promiseクラス

var q = require('q');

var p = q.delay('xxx', 1000);

第1引数にプロミスの結果を指定します。この引数は指定しなくても構いません。

第2引数に時間をミリ秒単位で指定します。

返り値としてプロミスが得られます。

サンプルコード1

bluebird-delay.js

var bluebird = require('bluebird');
var util = require('util');

var p1 = bluebird.delay(1000, 1000);
var p2 = bluebird.delay(2000, 2000);
var p3 = bluebird.delay(3000, 3000);
var p4 = bluebird.delay(4000, 4000);
var p5 = bluebird.delay(5000, 5000);

p1.done(function (result) {
    util.log(result + " ms.");
}, function (err) {
    console.error(err);
    process.exit(1);
});
p2.done(function (result) {
    util.log(result + " ms.");
}, function (err) {
    console.error(err);
    process.exit(1);
});
p3.done(function (result) {
    util.log(result + " ms.");
}, function (err) {
    console.error(err);
    process.exit(1);
});
p4.done(function (result) {
    util.log(result + " ms.");
}, function (err) {
    console.error(err);
    process.exit(1);
});
p5.done(function (result) {
    util.log(result + " ms.");
}, function (err) {
    console.error(err);
    process.exit(1);
});

使用パッケージ

  • Bluebird
    npm install bluebirdでインストールします。

実行結果

C:\work\node>node bluebird-delay.js
14 Aug 16:23:28 - 1000 ms.
14 Aug 16:23:29 - 2000 ms.
14 Aug 16:23:30 - 3000 ms.
14 Aug 16:23:31 - 4000 ms.
14 Aug 16:23:32 - 5000 ms.

関連

pizyumi
プログラミング歴19年のベテランプログラマー。業務システム全般何でも作れます。現在はWeb系の技術を勉強中。
スポンサーリンク

-Node.js