我使用 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());
Promise 是一个充当未来值占位符的对象。你的parse()
函数返回该承诺对象。您可以通过附加一个来获得该承诺的未来价值.then()
像这样的承诺处理程序:
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);
});
这是异步代码,因此从 Promise 中获取值的唯一方法是通过.then()
处理程序。
修改清单:
- Add
.then()
返回的 Promise 对象上的处理程序以获得最终结果。
- Add
.catch()
返回的 Promise 对象上的处理程序来处理错误。
- 添加错误检查
err
值在request()
打回来。
- 添加 try/catch 周围
JSON.parse()
因为如果 JSON 无效,它可能会抛出异常
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)