为什么我的Promise处于待处理状态? HTTP请求库已更改

时间:2020-04-23 07:00:37

标签: node.js promise

我从过时的请求更改为axios。 original code

我的代码

var axios = require("axios");
var userDetails;

function initialize() {
    const url = "https://api.github.com/users/narenaryan"
    var options = {


    headers: {
            'User-Agent': 'axios'
        }
    };
    // Return new promise 
    return new Promise(function(resolve, reject) {
        // Do async job
        axios.get(url, options, function(err, resp, body) {
            if (err) {
                reject(err);
            } else {
                resolve(JSON.parse(body));
            }
        })
    })

}

function main() {
    var initializePromise = initialize();
    console.log(initializePromise);
    initializePromise.then(function(result) {
        userDetails = result;
        console.log("Initialized user details");
        // Use user details from here
        console.log(userDetails)
    }, function(err) {
        console.log(err);
    })
}

main();

运行时

Promise { <pending> }

为什么?

1 个答案:

答案 0 :(得分:1)

由于axios.get不接受回调函数,因此它使用下面的代码返回一个Promise。

    var axios = require("axios");
    var userDetails;

    function initialize() {
        const url = "https://api.github.com/users/narenaryan"
        var options = {
            headers: {
                'User-Agent': 'axios'
            }
        };
        console.log(url, options)
        return axios.get(url, options);
    }

    function main() {
        var initializePromise = initialize();
        console.log(initializePromise);
        initializePromise.then(function (result) {
            userDetails = result;
            console.log("Initialized user details");
            console.log(userDetails.data)
        }).catch(function (err) {
           console.log(err);
        });
    }

    main();