gpt4 book ai didi

javascript - Axios DELETE 对 CORS 服务器的调用触发 promise 在预检 OPTIONS 调用上解决

转载 作者:行者123 更新时间:2023-11-28 16:56:20 24 4
gpt4 key购买 nike

我有一个带有 CORS 设置的 API,允许来自特定来源的任何方法和 header 。使用 axios,我尝试对服务器进行并发 DELETE 调用,然后在完成所有删除调用后重新加载所有数据,例如

//module ajax;
const deleteAsset = function(id) {
return axios.delete('/api/Asset/' + id);
};

const getAllAssets = function() {
return axios.get('/api/Asset/');
};


//module data
...
Promise.all(ids.map(id => { ajax.deleteAsset(id); }))
.then(() => { ajax.getAllAssets(); });

我发现的问题是,由于预检 OPTIONS 请求, promise 在 OPTIONS 请求返回后解决,而不是等待 DELETE 请求(因此在服务器上发生删除之前重新加载数据)。

有什么方法可以防止这种情况发生并仅解决 DELETE 请求上的 promise 吗?

最佳答案

您对选项的解释不正确。不同步是因为您的代码。

您应该 => ajax.deleteAsset(id)=> {return ajax.deleteAsset(id)} 。在您的情况下,您不会返回 map 的 promise ,因此您无法同步您的 promise 。

您可以console.log下面的dfds来验证它确实是一个包含Promise的数组(而不是undefined)

下面的代码应该允许您同步删除和“检索”

const dfds = ids.map(id => ajax.deleteAsset(id))
return Promise.all(dfds).then(_ => ajax.getAllAssets())

(带回车的替代方案)

const dfds = ids.map(id => { return ajax.deleteAsset(id) })
return Promise.all(dfds).then(_ => { return ajax.getAllAssets() })

关于javascript - Axios DELETE 对 CORS 服务器的调用触发 promise 在预检 OPTIONS 调用上解决,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59054904/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com