我应该在等待事件启动时明确创建一个承诺吗
Should I explicitly create a promise when waiting for an event to fire?
我正在编写一个函数来获取rss提要并返回上次更新的日期:
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);
});
}
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 从javascript创建一个列表
- Kendo:我该如何在树视图中创建一个递归的hieiarchy
- 从html创建一个指令,该指令按类名应用函数
- 如何为jQuery屏蔽输入插件创建一个允许字母数字、空格和重音字符的掩码
- 我想在AngularJS应用程序中创建一个输入数字框,用户不应该在该框上键入十进制数字.(一个整数输入框)
- 创建一个成功/错误的承诺,例如像ajax
- 我可以创建一个承诺来检查变量是否设置为角度吗?
- 在这种情况下,我将如何使用 javascript 创建一个承诺函数
- 创建一个Q承诺并稍后调用它
- 我应该在等待事件启动时明确创建一个承诺吗
- 在Angular应用的路由中的resolve中创建一个承诺
- 我如何创建一个javascript承诺,它解析为一个then
- 是否有一种直接的方法可以让jQuery动画在集合上创建一个新的承诺?
- 如何创建一个承诺树
- 创建一个承诺,使用angular factory从firebase访问多个数据点
- 如何创建一个返回现有承诺而不是新承诺的函数
- 创建一个(ES6)承诺而不开始解决它
- 后遗症-创建一个幼虫后不返回承诺
- 定义一个承诺,创建一个新的Service Object