简体   繁体   English

我应该在等待事件发生时明确地创建一个承诺吗?

[英]Should I explicitly create a promise when waiting for an event to fire?

I am writing a function to get an rss feed and return the date of the last update: 我正在编写一个函数来获取rss feed并返回上次更新的日期:

var FeedParser = require('feedparser'),
Promise = require('bluebird'),
request = require('request');

function getDate() {
    var deferred = Promise.defer();
    var feed = new FeedParser();
    request('rss.xml');
    .on('response',function() {
        this.pipe(feed);
    });

    feed.on('meta',function() {
        deferred.resolve(this.meta.date);
    });

    return deferred.promise;
}

Is this an anti-pattern? 这是反模式吗? What is the proper way to do this? 这样做的正确方法是什么?

You can simplify it a bit. 你可以简化一下。

var FeedParser = require('feedparser'),
Promise = require('bluebird'),
request = require('request');

function getDate() {
  return new Promise(function(resolve, reject){
    var feed = new FeedParser();
    request('rss.xml').on('error', reject).pipe(feed);
    feed.on('meta',function() {
      resolve(this.meta.date);
    }).on('error', reject);
  });
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM