javascript - 如何正确编写 promise 返回函数?

标签 javascript promise bluebird

我正在尝试按照 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) 
  });
});

关于javascript - 如何正确编写 promise 返回函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33905616/

相关文章:

Javascript:在同一命名空间内的数组中引用变量

swift - 轮询 url 直到响应为某个值

javascript - 在异步代码中运行同步代码 - promise

javascript - 如何从 JSON 对象内的 Promise 返回数据? Angular js

express - Mongoose Model#save 在 Promise.all() 处理中未被调用

当我在 Opera 中调用 FB.Canvas.setSize 时,javascript FB 对象未准备好

javascript - 寻求帮助在 html5 中指定教科书格式,专门用于平板电脑,其中包括笔记

javascript - 如何将数组列表转换为json对象列表

javascript - Promise.all 那么结构无法按预期工作

javascript - Promise.each 没有 Bluebird