Tengo un código con 2 funciones. taskA
requiere algún valor y obtiene ese valor a través de una devolución de llamada que devuelve el valor dentro de una promesa. Luego devuelve el resultado de hacer algo con ese valor a través de una segunda devolución de llamada. taskB
proporciona el valor a través de una devolución de llamada que también se pasa como parámetro, pero esta devolución de llamada es síncrona.
¿Cómo puedo obtener el valor de taskB
y pasarlo a taskA
, y obtener el resultado para devolverlo a taskB
? Puedo modificar taskA
, pero taskB
debe proporcionar su valor y obtener un resultado a través de una devolución de llamada sincrónica.
async function taskA(requestValue: () => Promise<Value>, provideResult: (result: Result) => void) { while(someCondition) { let value: Value = await requestValue(); let result: Result = processValue(value); provideResult(result); } } function taskB(valueCallback: (value: Value) => Result) { let state: State = someState; ... let handleEvent = (event) => { let result: Result = valueCallback(convertToValue(event)); state = updateState(result); } }
Aquí hay un diagrama de secuencia del comportamiento que quiero habilitar: