标题表明我正在尝试在Unity(WebGL)中发出HTTP请求。
在我在这里找到的文档中:WebGL Networking他们告诉我创建一个IEnumerator
类型的函数,并通过StartCoroutine
调用对其进行调用。
这很好,我的问题是我需要为另一个库中的类提供回调HttpRequest
。
我的回调如下:
private string HttpRequest(string url, string method, string body=null) {
WWW www = null; // = null is compiler candy
if (method == "GET") {
www = new WWW(url);
} else if (method == "POST") {
//POST specific implementation...
} else {
// do something else
}
while (!www.isDone) { } // this is Wrong.
return www.text;
}
问题在于,除非我从HttpRequest
返回,否则调用方法JavaScript将无法处理该请求。但是另一方面,调用方法期望string
而不是某种IEnumerator
。
构造WWW类后,是否有一些解决方法可以让JavaScript正常工作?
答案 0 :(得分:1)
否
WWW
和UnityWebRequest
是异步的。
要执行同步请求,您需要编写一个JavaScript插件。通过使用一些库,它不是很复杂,例如jquery。
function getdata($url, $method, $data)
{
var text = '';
$.ajax({
url: $url,
type: $method,
async: false, //synchronous request
data: $data,
success: function(data){
text = data;
},
error: function(data){
text = data;
}
});
return text;
}
更多信息: