javascript - 从 unity 和 Web 浏览器之间的异步调用返回数据
问题描述
我正在开发一个项目,我们正在使用统一构建一个启用 webgl 的应用程序以在浏览器中使用。
由于一些关于身份验证和 cookie 的问题,我们不得不使用.jslib
插件将一些统一调用映射到网站代码中的 javascript 调用。
两个应用程序之间的代码映射工作正常,但我在其中一个插件函数中遇到了异步问题
我正在研究以下插件代码图:
AuthenticatedGet: function (uri) {
var uriString = Pointer_stringify(uri)
var result = authenticatedGetRequest(uriString)
var buffer = _malloc(lengthBytesUTF8(result) + 1)
writeStringToMemory(result, buffer)
return buffer
},
在网站代码库中调用以下函数:
function authenticatedGetRequest(uri) {
let endpoint = wpApiSettings.root + uri
$.ajax({
url: endpoint,
method: "GET",
beforeSend: function (xhr) {
xhr.setRequestHeader("X-WP-Nonce", wpApiSettings.nonce)
},
data: {},
})
.done((response) => {
// ? do we need to stringify?
return JSON.stringify(response)
})
.fail((error) => {
console.error(error)
return error
})
}
问题出在插件对authenticatedGetRequest
. 由于该函数包含一个承诺,我需要等待异步调用完成。
我尝试重写代码以返回和处理承诺:
插件代码:
AuthenticatedGet: function (uri) {
var uriString = Pointer_stringify(uri)
var result = authenticatedGetRequest(uriString).then((response) => {
var buffer = _malloc(lengthBytesUTF8(result) + 1)
writeStringToMemory(result, buffer)
return buffer
})
},
网站代码:
function authenticatedGetRequest(uri) {
let endpoint = wpApiSettings.root + uri
return $.ajax({
url: endpoint,
method: "GET",
beforeSend: function (xhr) {
xhr.setRequestHeader("X-WP-Nonce", wpApiSettings.nonce)
},
data: {},
})
.done((response) => {
// ? do we need to stringify?
return JSON.stringify(response)
})
.fail((error) => {
console.error(error)
return error
})
}
但是这样做会导致统一方面的构建错误:
我应该注意,如果我通过立即返回一个字符串(消除调用的异步性质)来伪造网站端的响应,那么一切正常。
一般来说,我对统一和 c# 很陌生,所以我不确定我在哪里出错了。有任何想法吗?
解决方案
推荐阅读
- flutter - 如何在 Flutter 中创建类似 instagram 的 appbar
- git - 尝试使用 Geany 提交消息时出错
- firebase - 有没有办法在不授予用户权限的情况下更新 Firestore 的文档?
- ffmpeg - 在直播时从网络摄像头切换视频
- python - python子进程,将退出代码重定向到文件
- azure - 如何使用 Rest API 管理 Azure DevOps 组权限
- scala - 来自整数和字符串列的 Scala 新 Map 列
- laravel - Laravel 8 播种:运行:handelerror
- javascript - Express.js 在 promise .catch() 错误中发送响应
- nmap - 将 Nmap 与 proxychains4 一起使用