Javascript fetch POST 调用不等待解析



我正在使用FastAPI和Javascript开发Python面板。我在FastAPI中创建了一个返回URL的POST调用,我正试图用Javascript获取该URL并将其传递给播放器。这个POST调用的输出是JSON。我正在尝试将某个键的值分配给laURL变量。问题是,即使我使用awaitasync函数,Javascript并没有真正等待解决响应,第二个函数在laURL分配完成之前执行。

async function fetchLicense(playbackURL) {
try {
let response = await fetch(apiURL, {
method: "POST"
});
if (response.ok) {
let result = await response.json();
let laURL = JSON.parse(result).la_url;
return await laURL;
} else {
console.log("POST Error: ", response);
} 
} catch (error){
console.log("POST Error: ", error);
}
}

然后我在另一个函数中使用返回值:

function fetchSource(playbackURL) {
let laURL = fetchLicense(playbackURL);
const source = {
dash: playbackURL,
drm: {
widevine: {
LA_URL: laURL 
},
immediateLicenseRequest: true
}
};
return source;

我已经检查并尝试了几种不同的解决方案,但似乎都不起作用。

这应该很简单,但不幸的是,解决方案对我来说并不那么明显

Javascriptasync/await只是使用Promises的语法糖。CCD_ 7因此返回一个承诺。您可以使用Promise.then(/* callback */)来指定解析数据时应该执行的操作。

如果你对此不熟悉,下面的链接可能会帮助你了解它的确切工作原理:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function

最新更新