我需要覆盖从库到单线程应用程序的一些回调函数。我多次调用方法homerSendJsonMessage
,一个接一个地重要。总是等待前一个。它就像一个建设者。
我在库中有回调函数 - 但是当我将它们放入我的方法时,JavaScript会立即执行。 (我知道为什么)我认为这个例子可以解决它。但是" IDE"说 - 没有回报价值..任何建议?
public sendJson(request:YodaJsonMessage):YodaJsonMessage|Error {
lib.homerSendJsonMessage(request, (message:YodaJsonMessage, error:any) => {
if (!message) {
return error;
} else {
return message;
}
});
}
来自图书馆的命令
homerSendJsonMessageToYoda(message:YodaJsonMessage, callback:((message:YodaJsonMessage, error:any)=>void)):void;
答案 0 :(得分:1)
由于您的sendJson
方法使用的是异步功能,因此您无法在异步操作完成之前返回值。
你可以这样做:
(1)使用回调:
public sendJson(request: YodaJsonMessage, cb: (result: YodaJsonMessage | Error) => void): void {
lib.homerSendJsonMessage(request, (message: YodaJsonMessage, error: any) => {
if (!message) {
cb(error);
} else {
cb(message);
}
});
}
(2)回复承诺:
public sendJson(request: YodaJsonMessage): Promise<YodaJsonMessage> {
return new Promise((resolve, reject) => {
lib.homerSendJsonMessage(request, (message: YodaJsonMessage, error: any) => {
if (!message) {
reject(error);
} else {
resolve(message);
}
});
});
}