首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Node.JS -回报承诺给‘未定义’

Node.JS -回报承诺给‘未定义’
EN

Stack Overflow用户
提问于 2018-07-12 11:10:57
回答 1查看 197关注 0票数 0

当我试图调用这个oauth-1.0 API请求时,

代码语言:javascript
复制
const request = require('request');
const OAuth = require('oauth-1.0a');
const crypto = require('crypto');

function main(params) {
    // Dependencies
    // Initialize
    const oauth = OAuth({
        consumer: {
            key: '****',
            secret: '****'
        },
        signature_method: 'HMAC-SHA1',
        hash_function(base_string, key) {
            return crypto.createHmac('sha1', key).update(base_string).digest('base64');
        }
    });
    // Note: The token is optional for some requests
    const token = {
        key: '****',
        secret: '****'
    };

    const request_data = {
        url: 'http://****/rest/V1/products/12345',
        method: 'GET',
        //data: { status: 'Hello Ladies + Gentlemen, a signed OAuth request!' }
    };

    return new Promise((resolve, reject) => {
        request({
            url: request_data.url,
            method: request_data.method,
            form: request_data.data,
            headers: oauth.toHeader(oauth.authorize(request_data, token))
        }, function (err, res, body) {
            //console.log(res.body.name);
            if (err){ 
                reject({
                    statusCode: 500,
                    headers: { 'Content-Type': 'application/json' },
                    body: {'message': 'Error processing your request' },
                  });    
            } else {
                resolve({
                    body: JSON.parse(body),
                })
            }
        });
    });
};
exports.main = main;

它回来了

承诺{<待决>} 未定义

然而,当我只使用console.log(body)时,它给出了正确的结果

..

.

……

.

.

.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-12 11:27:31

实际上,它的工作原理是正确的,并返回承诺。

所以如果你想从诺言中获得“数据”,你应该使用Promise.then()

就像这个来自MDN的例子。

代码语言:javascript
复制
const promise1 = new Promise(function(resolve, reject) {
  resolve('Success!');
});

promise1.then(function(value) {
  console.log(value);
  // expected output: "Success!"
});

希望能帮上忙!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51304135

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档