Javascript 打包回调到正常函数
我需要涵盖一些回调函数从库到单线程应用程序。我多次调用该方法Javascript 打包回调到正常函数,javascript,typescript,callback,Javascript,Typescript,Callback,我需要涵盖一些回调函数从库到单线程应用程序。我多次调用该方法homerSendJsonMessage,逐个调用是很重要的。总是等待前一个。它就像一个建筑工人 我在库中有回调函数——但当我将它们放入方法中时,JavaScript会同时执行所有回调函数。(我知道为什么)我认为这个例子可以解决这个问题。但是“IDE”表示没有返回值。。有什么建议吗 public sendJson(request:YodaJsonMessage):YodaJsonMessage|Error { lib.homer
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;
由于您的
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);
}
});
});
}
公共sendJson(请求:YodaJsonMessage):承诺{
返回新承诺((解决、拒绝)=>{
lib.homerSendJsonMessage(请求,(消息:YodaJsonMessage,错误:any)=>{
如果(!消息){
拒绝(错误);
}否则{
解析(消息);
}
});
});
}
IDE是正确的,您定义该方法返回
YodaJsonMessage | Error
,但函数不返回任何内容。我知道-但我如何解决这个问题?lib.homerSendJsonMessage返回什么?另外,javascript始终是单线程的。这是一个空白,您可以从Library中看到命令,我需要1)发送第一个JSON并通过响应执行某些操作。2) 发送secong JSON,然后通过第二个和第一个响应执行某些操作3)。。。