Promise

Promise

  • ES2015で導入された
  • then のメソッドチェインでコールバック関数をつなげられるようにする
    • 最近のjQueryでも使える
$.get("http://example.com/aaa")
    .then((res) => {
        return JSON.parse(res.body);
    })
    .then((obj) => {
        // ...      
    });

さっきのコードはこうなる。ちょっと読みやすくなる。

let db;
MongoClient.connect('mongodb://localhost:27017/rssDataBase')
    .then((_db) => {
        db = _db;
        return fs.readFile('./feed.xml', 'utf8');
    })
    .then(rssString => parseString(rssString))
    .then((result) => {
        const items = result.rss.channel[0].item;
        return Promise.all(items.map(item => request(item.link[0])));
    })
    .then((responses) => {
        return responses.map((res) => {
            return {
                url  : res.request.href,
                body : res.body,
            };
        });
    })
    .then((data) => {
        return db.collection('entries').insertMany(data);
    })
    .then(() => {
        db.close();
    });

使えるところではガンガン使っていこう。

results matching ""

    No results matching ""