这是Javascript中的一个函数,如果它不包含数组,则需要通过订阅检查Angular服务,但返回值未定义,因为该函数不会更改订阅中的变量值。
function checkAvailableBonus() {
var dataSize = 0;
var returnValue = "false";
window.angularComponentRef.component.slotsBonusesService.getPlayerAvailableBonuses().subscribe(function (data) {
dataSize = data.length;
if (dataSize !== 0) {
returnValue = "true";
} else {
returnValue = "false";
}
});
return (returnValue);
}
checkAvailableBonus();
除了在订阅完成后返回“ true” /“ false”的函数之外,我都是这样。
答案 0 :(得分:1)
您的函数将安装回调(subscribe(function (data)
位),然后立即返回returnValue
,而无需等待回调执行,因此您将始终返回"false"
。
请使用Promise
:
function checkAvailableBonus() {
return new Promise(resolve => {
window.angularComponentRef.component.slotsBonusesService.getPlayerAvailableBonuses().subscribe(function (data) {
const dataSize = data.length;
if (dataSize !== 0) {
resolve("true");
} else {
resolve("false");
}
});
});
}
checkAvailableBonus().then(result => console.log(result));