如何正确编码promise返回函数
How to properly code a promise returning function?
我正在尝试按照promise返回模式对函数进行编码,这是我正在尝试的一个通用示例:
var Promise = require('bluebird');
var request = require('request');
var returnPromise = Promise.method(function () {
request
.get('http://google.com/img.png')
.on('response', function(response) {
if (response.statusCode !== 200)
throw new Error('Bad request');
else
return response.headers;
})
});
returnPromise()
.then(function (headers) {
console.log(headers);
})
.catch(function (err) {
console.log('Error handling);
});
然而,这并不能正常工作,因为错误还没有被抛出和处理。应如何实施?
var Promise = require('bluebird');
var request = require('request');
var returnPromise = function () {
return new Promise(function(resolve, reject){
request
.get('http://google.com/img.png')
.on('response', resolve)
.on('error', reject)
});
});
您应该使用new Promise
而不是Promise.method。这是因为Promise不会捕获事件处理程序的抛出或返回。
var Promise = require('bluebird');
var request = require('request');
var returnPromise = function () {
return new Promise(function(resolve, reject){
request
.get('http://google.com/img.png')
.on('response', function(response) {
if (response.statusCode !== 200)
reject(Error('Bad request'));
else
resolve(response.headers);
})
});
});
returnPromise()
.then(function (headers) {
console.log(headers);
})
.catch(function (err) {
console.log('Error handling);
});
相关文章:
- 使用返回函数sinde.attr()jquery元素
- 从自执行函数返回函数的Javascript性能命中率
- Node Express Handlebars帮助程序未返回函数的结果
- 未在Firefox中执行PageMethod的返回函数
- 对返回函数的函数感到困惑
- 从承诺返回不返回函数会导致警告
- 从函数返回函数而不调用返回的函数
- Javascript,闭包中的返回函数如何与外部函数连接
- 为什么Coderbyte.com's的Javascript模板喜欢返回函数的原始参数
- 对象函数返回函数而不是值
- 从外部函数(数组)了解返回函数(x)
- 从Javascript类对象返回函数
- 调用Typescript setter don't返回函数,尽管关联的getter可以工作
- 使用依赖注入在 JavaScript 中返回函数
- 通过单击JSP和javascript加载两个返回函数
- 需要说明:无法理解返回函数的javascript
- 简单的onClick返回函数不起作用
- 为什么这个闭包返回函数
- JS函数返回函数供以后使用-未定义参数
- Coffeescription类中的方法返回函数而不是字符串