我在 Next API 檔案夾的 .ts 檔案中運行以下代碼。我正在嘗試等待呼叫非官方的 Reverso API(https://www.npmjs.com/package/reverso-api)的結果。問題是即使來自反向的回應已經到達并且值已經更新,下面的代碼也會繼續等待請求。我該怎么辦?該reverso.getContext('Dog', 'English', 'German', ... ) 方法回傳一個 Promise。
type Data = {
responseWord : string
}
let r = 3;
export default async function handler( req: NextApiRequest, res: NextApiResponse<Data>) {
const Reverso = require('reverso-api');
const reverso = new Reverso();
console.log("1");
await reverso.getContext('Dog', 'English', 'German', (response : any) => {
r = response?.text;
console.log(r);
return;
}).catch((err : any) => {
});
console.log("2");
res.status(200).json({ responseWord : `${r}` });
}
uj5u.com熱心網友回復:
reverso.getContext()可以以兩種方式使用,通過使用基于回呼的方法,或者使用 Promise,因為它回傳一個 Promise。使用異步函式檢索回應資料的正確方法是:
const Reverso = require('reverso-api');
const reverso = new Reverso();
export default async function handler( req: NextApiRequest, res: NextApiResponse<Data>) {
try {
const { text } = await reverso.getContext('Dog', 'English', 'German');
res.status(200).json({ responseWord : `${text}` });
} catch(e){
console.log(e)
}
}
基于回呼的版本:
const Reverso = require('reverso-api');
const reverso = new Reverso();
export default function handler( req: NextApiRequest, res: NextApiResponse<Data>) : void {
reverso.getContext('Dog', 'English', 'German', (response : any) => {
res.status(200).json({ responseWord : response?.text });
}).catch((err : any) => {
console.log(err)
});
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/490018.html
標籤:javascript 承诺
上一篇:在javascript或vue中查找重復次數最多和最少的數字
下一篇:如何訪問腳本設定中的計算屬性?
