gpt4 book ai didi

javascript - 如何返回对 JSONP 请求的即时响应并在之后继续处理

转载 作者:数据小太阳 更新时间:2023-10-29 03:52:51 26 4
gpt4 key购买 nike

我正在使用 JSONP 从用户那里收集数据,但不要求用户获得响应。

因此我想向用户发送即时响应,这样他们就可以继续操作而无需等待服务器处理。

我如何向他们发送回复但继续处理?

我正在使用 Google Script,但我想任何返回响应并继续处理的 javascript 方式也应该有效。

我有这样的东西:

function handleResponse(e) {
//do something with e
return ContentService
.createTextOutput('console.log("updated")')
.setMimeType(ContentService.MimeType.JAVASCRIPT);
}

我想返回响应,然后“用 e 做点什么”。

编辑:好吧,经过大量的折腾,我有了一个半可行的解决方案(总是有障碍!)

目前我有:

var SCRIPT_PROP = PropertiesService.getScriptProperties();
function doGet(e){
SCRIPT_PROP.setProperty("myParameters", e.parameters);
ScriptApp.newTrigger("handleResponse")
.timeBased()
.after(20 * 1000)
.create();
return ContentService
.createTextOutput('console.log("processing")')
.setMimeType(ContentService.MimeType.JAVASCRIPT);
}
function handleResponse() {
Logger.log(SCRIPT_PROP.getProperty("myParameters"));
}

它所做的是将用户的数据保存到一个类似全局的变量中。然后它设置一个触发器,在 20 秒后执行 handleResponse() 函数。最后它向用户返回一些东西,这样他们就不必等待 handleResponse() 函数完成。

现在对于我在这个解决方案中遇到的问题,它似乎是碰运气,它有时会触发 handleResponse() 函数,有时永远不会执行。

根据文档,触发器将在您指定的 +/- 15 分钟内执行!现在,在它工作的时候,我看到它需要 10 秒到 45 秒。在它不起作用的时候,我已经等了 20 分钟,但仍然一无所获。似乎我设置的触发器越短,它永远不会执行的次数就越多。

我遇到的另一个问题是我一次只能有 14 个触发器,所以如果他们决定花 15 分钟来执行,我可以很容易地达到这个限制。

还有其他方法可以使这样的解决方案起作用吗?

最佳答案

如果唯一的要求是停止前端的窗口加载操作,如评论中所述,则考虑将脚本标记插入包装在 setTimeout()...

function createScriptTag() {

setTimeout( function() { // throw task in JS queue to prevent window load
var scriptTag = document.createElement('script');
scriptTag.src = "SCRIPT_URL?prefix=myCallback"; // include parameters if needed
document.body.appendChild(scriptTag);
}, 0);

}

createScriptTag();

关于javascript - 如何返回对 JSONP 请求的即时响应并在之后继续处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32429566/

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