SignalR 허브 함수 시퀀스가 비동기 적으로 실행되지 않는 문제가 발생했습니다.Typescript 비동기/SignalR 함수를 기다리는 중
는 내가 가진 :
이> 0
> 2
> Uncaught (in promise) Error: SignalR: Connection must be started before data can be sent. Call .start() before .send()
> at hubConnection.fn.init.send (jquery.signalR-2.2.1.js:780)
> at init.invoke (jquery.signalR-2.2.1.js:2734)
> at Object.userOnline (hubs:120)
> at HubUserOnline (WaitingRoom.ts:190)
> at WaitingRoom.ts:203
> at Generator.next (<anonymous>)
> at fulfilled (WaitingRoom.ts:1)
> 1
따라서 두 번째 허브 기능은 허브 인스턴스가 생성되기 전에 실행되는 거라고 나타내며, 그것은있어 :
//Hub functions
//Initializing hub server and clients.
function HubStart() {
$.connection.hub.start().then(function() {
console.log(1);
return new Promise(resolve => resolve);
});
}
//Hub server-side function that add user's name to chat board.
function HubUserOnline(user: any) {
$.connection.boardHub.server.userOnline(user).then(resolve => { return new Promise(resolve => resolve); });
}
//Main
var viewModel = ko.mapping.fromJS(model, mappingOption);
main();
//Definition of the main function
async function main() {
console.log(0);
await HubStart();
console.log(2);
await HubUserOnline(ko.mapping.toJS(viewModel.CurrentUser))
console.log(3);
}
});
그러나, 콘솔은 말한다 오류.
허브 함수는 JQueryPromise를 반환하므로 허브 함수가 완료되면 함수에서 약속을 반환하도록했습니다. 아무도 내 코드와 재판에서 잘못을 나타낼 수 있습니까?
약속은 일반 개체입니다. 함수를 사용하려면 함수에서 반환해야합니다. 그렇지 않으면 함수가'undefined'를 반환합니다. –