Tengo una función que realiza una solicitud a una API.
async sendPrompt(prompt: string, engine: string, maxTokens: number): Promise<string> { const gptResponse = await this.openai.complete({ // ... // API call details // ... }); return gptResponse.data.choices[0].text.substring(1); }y otra función que lo llama, y debería devolver su respuesta.
queryGPT3(message: string): string { const prompt = this.preparePrompt('classifyPrompt', message); const promise = this.sendPrompt(prompt, 'gpt3', 100); const response = promise.then((res) => { return res; } return response; } La return response de línea final genera el error Type 'Promise<any>' is not assignable to type 'string'. ts(2322)
Entiendo que el retorno de una función asíncrona es una promesa, pero estoy llamando a .then() en ella, ¿no debería eso resolver la promesa en un valor real? Cuando paso el cursor sobre promse.then() , mi IDE me dice que su tipo de devolución también es una promesa. ¿Ambos await y .then() devuelven promesas? ¿Cuál es el punto de .then() ?
¿Cómo puedo obtener el retorno de una función asíncrona aquí y almacenarla en una variable?