Я не понимаю всех ваших вопросов, но ваша проблема, похоже, связана только с Обещаниями.
Если вы хотите связать свои Обещания в цепочку, вы должны вернуть решение * (с вашими данными здесь *) как это:
return new Promise(function(resolve, reject) {
return self.socketService.getMatricola().then((data: any) => {
self.registrationNumber = self.socketService.arrayBuffer2str(data.data.slice(3, data.data.length-2))
console.log(`Registration number is ${self.registrationNumber}`)
return resolve(withYourDataHere)
})
После этого вы сможете связать свое обещание и получить такой результат:
getRegistrationNumber().then((yourData) => {
console.log(yourData);
return yourData;
});
Если вам не нужен предыдущий ответ для выполнения Следующие запросы вы можете выполнить Promise.all ().
Например, вы можете сделать это:
const promises = [];
promises.push(getRegistrationNumber());
promises.push(getMachineType());
//etc...
return Promise.all(promises).then(() => {
//your code will be executed after all your requests are resolved
})
В вашем случае:
refreshData() {
this.getRegistrationNumber().then(() => {
this.swVersionRequest()
})
.then(() => { // not working like this
this.getMachineType()
})
}
этот код становится:
swVersionRequest() {
console.log("software version request");
return this.socketService.getSwVersion().then((data: any) => {
this.softwareVersionWifiGsm = this.socketService.arrayBuffer2str(data.data.slice(3, data.data.length-2))
this.softwareVersionWifiGsm = this.softwareVersionWifiGsm.substring(0, 2).split('').join(".") + ' ' + this.transformSwVersion(this.softwareVersionWifiGsm.substring(2, this.softwareVersionWifiGsm.length))
console.log(`Software version is ${this.softwareVersionWifiGsm}`)
})
}
getMachineType() {
console.log('get machine type')
return this.socketService.getMachineType().then((data: any) => {
console.log(`Machine type is ${this.machineType}`)
return this.machineType = data.data.slice(4, data.data.length-2)
})
}
refreshData() {
return this.getRegistrationNumber().then(() => {
return this.swVersionRequest().then(() => {
return this.getMachineType() //you can chain that if you change the return in your function
})
})
}
ИЛИ
refreshData() {
const promises = [];
promises.push(this.getRegistrationNumber());
promises.push(this.swVersionRequest());
promises.push(this.getMachineType());
return Promise.all(promises).then(() => {
//type your code here
})
}
Я согласен с saglamcem, у вас есть вся документация, необходимая для этого на MDN, и вы также можете использовать Observables.
Надеюсь, мы вам поможем.