一尘不染

Node.js承诺请求返回

node.js

我正在使用promis模块从请求模块返回我的json数据,但是每次运行它时,它都会为我提供此信息。

Promise { _45: 0, _81: 0, _65: null, _54: null }

我无法正常工作,有人知道这个问题吗?这是我的代码:

function parse(){
return new Promise(function(json){
    request('https://bitskins.com/api/v1/get_account_balance/?api_key='+api+'&code='+code, function (error, response, body) {
        json(JSON.parse(body).data.available_balance);
    });
});
}

console.log(parse());

阅读 205

收藏
2020-07-07

共1个答案

一尘不染

许诺是充当未来价值的占位符的对象。您的parse()函数返回该Promise对象。通过将.then()处理程序附加到promise,您可以在promise中获得未来的价值:

function parse(){
    return new Promise(function(resolve, reject){
        request('https://bitskins.com/api/v1/get_account_balance/?api_key='+api+'&code='+code, function (error, response, body) {
            // in addition to parsing the value, deal with possible errors
            if (err) return reject(err);
            try {
                // JSON.parse() can throw an exception if not valid JSON
                resolve(JSON.parse(body).data.available_balance);
            } catch(e) {
                reject(e);
            }
        });
    });
}

parse().then(function(val) {
    console.log(val);
}).catch(function(err) {
    console.err(err);
});

这是异步代码,因此,仅能通过.then()处理程序来获得承诺的价值。

修改清单:

  1. .then()在返回的promise对象上添加处理程序以获取最终结果。
  2. .catch()在返回的Promise对象上添加处理程序以处理错误。
  3. errrequest()回调中添加对值的错误检查。
  4. 添加try / catch,JSON.parse()因为如果无效的JSON可能抛出异常
2020-07-07