gpt4 book ai didi

javascript - 对象字段中的长值未通过 REST 发送

转载 作者:太空宇宙 更新时间:2023-11-04 16:32:11 24 4
gpt4 key购买 nike

我有一个带有 Value 字段的对象。该字段包含一个非常长的字符串(base64)。使用 console.log 时,该字段似乎包含字符串,但是,当仅打印出此字段时,我只得到一个空字符串:
enter image description here

我尝试通过 REST 服务发送此对象,但它只发送空字符串而不是正确的值。

这是怎么回事?我以前使用过这种字符串,效果很好,但现在看来我错过了一些重要的东西。

为了清楚起见,这得到了上面的输出:

console.log(myObject);

这会打印一个空字符串:

console.log(myObject.Value);

编辑:这是Value的分配方式:

    for (var i = 0; i < vm.data.profileSettings.length; i++) {
(function (i) {
var setting = vm.data.settings.filter(function(setting) { return setting.Id == vm.data.profileSettings[i].Id });

if (setting[0].Type == 2 && vm.data.profileSettings[i].copiedValue && typeof(vm.data.profileSettings[i].copiedValue) == 'object') {
Upload.base64DataUrl(vm.data.profileSettings[i].copiedValue)
.then(function(response) {
var splitted = response.split(",");

vm.data.profileSettings[i].Value = splitted[1];
});

}
})(i);
}

profileDataService.saveProfileSettings(vm.data.selectedProfile.Id, vm.data.profileSettings)
.then(function(response) {
vm.success = true;
});

最佳答案

Upload() 是异步的,因此您需要在发送最终数据之前完成所有 Upload,因为该数据取决于上传的响应。

您可以创建上传 promise 数组,并在所有这些 promise 都已解决时使用 $q.all() 运行代码

<小时/>

在循环之前创建空数组并将每个上传 promise 插入该数组

var uploadPromises = []

然后更改

Upload.base64DataUrl(vm.data.profileSettings[i].copiedValue)
.then(function(response) {
// do stuff with response
});

var req =  Upload.base64DataUrl(vm.data.profileSettings[i].copiedValue)
.then(function(response) {
// do stuff with response
});
uploadPromises.push(req);

现在包装您的最终请求

$q.all(uploadPromises ).then(function(){    
profileDataService.saveProfileSettings(...)
}).catch(function(err){
// do something when any upload promise is rejected
});

请注意,如果任何上传 promise 被拒绝,您将需要确定策略。如果您想要这样做,您可以使用上传 promise 本身的捕获来解决该 promise ,以便始终发出最终请求

关于javascript - 对象字段中的长值未通过 REST 发送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39703111/

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