Javascript 我是否应该在等待事件触发时明确创建承诺?
我正在编写一个函数来获取rss提要并返回上次更新的日期:Javascript 我是否应该在等待事件触发时明确创建承诺?,javascript,node.js,rss,promise,bluebird,Javascript,Node.js,Rss,Promise,Bluebird,我正在编写一个函数来获取rss提要并返回上次更新的日期: var FeedParser = require('feedparser'), Promise = require('bluebird'), request = require('request'); function getDate() { var deferred = Promise.defer(); var feed = new FeedParser(); request('rss.xml'); .
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);
});
}
您可能应该将
var feed=new FeedParser()
在Promise回调中,因此任何可能抛出的异常都会变成Promise拒绝。