在等待事件触发时,我应该明确地创建一个承诺吗?
Should I explicitly create a promise when waiting for an event to fire?
我正在编写一个函数来获取 rss 提要和 return 最后更新的日期:
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;
}
这是反模式吗?执行此操作的正确方法是什么?
你可以稍微简化一下。
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);
});
}
我正在编写一个函数来获取 rss 提要和 return 最后更新的日期:
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;
}
这是反模式吗?执行此操作的正确方法是什么?
你可以稍微简化一下。
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);
});
}