所以目前我正在尝试循环返回(API表示它返回一个在其中有承诺的对象)
API:https://github.com/sentanos/roblox-js/wiki/Main-Functions
我的代码到目前为止:
var rbx = require('roblox-js');
rbx.login('INF_BOT', '$$$')
.then(function (info) {
console.log('Logged in with ID ' + info.userId)
})
.catch(function (err) {
console.error(err.stack);
});
var Players = rbx.getPlayers(539310, 1, false, -2)
for (var plr in Players) {
console.log(plr);
}
我从来没有见过在一个对象中帮助过的承诺,也不知道如何通过承诺来获得返回的玩家。上面链接的API表示我在函数getPlayers()
下的含义答案 0 :(得分:0)
问题出在满足登录操作的承诺之前,您尝试调用getPlayers()。目前,尚未对rbx对象进行身份验证。换句话说,承诺在未来的某个时间异步完成,而getPlayers()的调用在login()同步之后发生。因此,要修复代码,您可以在履行承诺时调用getPlayers(),即在then子句中:
var rbx = require('roblox-js');
rbx.login('INF_BOT', '$$$')
.then(function (info) {
console.log('Logged in with ID ' + info.userId);
var Players = rbx.getPlayers(539310, 1, false, -2);
for (var plr in Players) {
console.log(plr);
}
})
.catch(function (err) {
console.error(err.stack);
});
同样验证getPlayers()返回一个更有可能的promise,然后以与login()相同的方式调用它。
答案 1 :(得分:0)
循环必须放在.then函数中...... 类似这个可能不可执行的例子......例如。否则,您将尝试访问可能尚未存在的数据。
var rbx = require('roblox-js');
rbx.login('INF_BOT', '$$$')
.then(function (info) {
console.log('Logged in with ID ' + info.userId)
rbx.getPlayers(539310, 1, false, -2).promise.then(function(Players){
for (var plr in Players) {
console.log(plr);
}
});
});
})
.catch(function (err) {
console.error(err.stack);
});
您必须查看API以确定您想要的集合是否传递给.then()。但这是一般模式。根据您的需要,还有很多其他方法可以构建它。
这假设getPlayers()返回一个promise。