13
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Node.jsで関数を順番に実行する

Last updated at Posted at 2014-05-12

step npmパッケージサイト
https://npmjs.org/package/step

step GitHubサイト
https://github.com/creationix/step

非同期プログラムは、コールバックの階層が深くなるとコードの見通しが悪くなりがちです。stepは、引数で指定した関数を順番に実行することができます。

下記サンプルのように、各関数の戻り値は次の関数の第二引数として渡されます。

インストール

npm install step

サンプルコード

読み込むテキストファイル

hello.txt
Hello World!
app.js
var http = require('http');
var fs = require('fs');
var Step = require('step');
 
var keyword = '';
 
//順番に実行する
Step(
    function first(){
        //ファイルを読み込む
        fs.readFile(__dirname + '/hello.txt', this);
    },
    function second(err, str){
        if(err) throw err;
        //読み込んだ内容を文字列に置換し、次の関数の第2引数に渡す
        return str.toString();
    },
    function third(err, str){
        if(err) throw err;
        keyword = str;
        //サーバーの起動
        http.createServer(function (req, res) {
            res.writeHead(200, {'Content-Type': 'text/plain'});
            
            //文字列をブラウザに出力
            res.end(keyword + '\n');
            
        }).listen(1337, '127.0.0.1');
    }
);
 
console.log('Server running at http://127.0.0.1:1337/');

CoffeeScriptで記述した場合

app.coffee
http = require('http')
fs = require('fs')
Step = require('step')
keyword = ''

#順番に実行する
Step (first = ->
    
    #ファイルを読み込む
    fs.readFile __dirname + '/hello.txt', this

), (second = (err, str) ->
    throw err    if err
    
    #読み込んだ内容を文字列に置換し、次の関数の第2引数に渡す
    str.toString()
), third = (err, str) ->
    throw err    if err
    keyword = str
    
    #サーバーの起動
    
    #文字列をブラウザに出力
    http.createServer((req, res) ->
        res.writeHead 200,
            'Content-Type': 'text/plain'

        res.end keyword + '\n'
        return
    ).listen 1337, '127.0.0.1'
    return

console.log 'Server running at http://127.0.0.1:1337/'
13
12
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
13
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?