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)。。。