Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 同步提供xmlhttprequest的案例_Javascript_Asynchronous_Synchronization_Xmlhttprequest_Specs - Fatal编程技术网

Javascript 同步提供xmlhttprequest的案例

Javascript 同步提供xmlhttprequest的案例,javascript,asynchronous,synchronization,xmlhttprequest,specs,Javascript,Asynchronous,Synchronization,Xmlhttprequest,Specs,可以简单地将同步请求的数量封装为异步请求 例如,下面代码中的“func”参数可以按顺序包含多个同步请求。与使用DOM作为对数据进行操作的媒介相比,这将为您提供更多的数据处理能力。(还有其他方法吗?我已经有一段时间没有使用javaScript了) 现在,我的推理肯定有问题,因为以下是规格说明: workers外部的同步XMLHttpRequest正在从web平台中删除,因为它对最终用户的体验有不利影响。(这是一个耗时多年的漫长过程。)当JavaScript全局环境是文档环境时,开发人员不得为异步参

可以简单地将同步请求的数量封装为异步请求

例如,下面代码中的“func”参数可以按顺序包含多个同步请求。与使用DOM作为对数据进行操作的媒介相比,这将为您提供更多的数据处理能力。(还有其他方法吗?我已经有一段时间没有使用javaScript了)

现在,我的推理肯定有问题,因为以下是规格说明:

workers外部的同步XMLHttpRequest正在从web平台中删除,因为它对最终用户的体验有不利影响。(这是一个耗时多年的漫长过程。)当JavaScript全局环境是文档环境时,开发人员不得为异步参数传递false。强烈建议用户代理在开发人员工具中警告此类使用,并在出现InvalidAccessError异常时尝试抛出该异常。@

我认为您应该不惜一切代价避免请求中的异步,而是在异步函数中封装同步请求

以下是主要问题和后续行动

  • 我举的例子有什么问题吗
如果没有,则:

  • 强制请求异步是正确的解决方案吗
不用说,如果我的任何“主张”完全是错误的或半真半假的,你就有自由揭穿它们。我对此感到困惑,我告诉你


请记住,我是在终端中测试javaScript,而不是在浏览器中。我在GO编程语言中使用了Web服务器,一切似乎都很好。直到我在浏览器中测试了代码,我才得到这个规范的提示。

这个答案已经编辑过了

是的,我的推理是错误的

有两个角度需要考虑。 异步在javascript中的实际含义是什么? 一个异步调用是否可以暂停另一个异步调用

javascript中的Async并不意味着脚本将运行在具有多个调用堆栈的交错/交替进程中。它更像是一个全局定时延迟/延迟命令,一旦有机会,它将完全接管。这意味着异步调用可以是阻塞的,而非阻塞的“async:true”部分只是一个基于xhttprequest实现方式的“技巧”

这意味着在setTimeout内封装同步请求可能会等待失败的请求,而该请求最终会阻止其他不相关的异步请求,其中as“async:true”功能将仅根据其状态值执行

这意味着旧的浏览器支持要求您在需要执行依赖于另一个的多个请求时链接请求或使用DOM作为介质..Ugh

幸运的是,Javascript现在有线程了。现在,我们可以简单地使用线程同步地获得多个相关请求的干净封装。(或任何其他背景任务)

简言之: 如果请求在工作进程内,浏览器在同步运行请求时不应出现任何问题。浏览器还没有成为操作系统,但它们更接近操作系统

顺便说一句,这个答案或多或少是因为反复试验。我围绕firefox做了一些测试用例,观察到异步请求确实会停止其他异步请求。我只是根据这一观察推断。我不会接受我自己的答案,以防我仍然遗漏了什么

编辑(再次…) 实际上,可以将xhttp.timeout与xhttp.ontimeout一起使用。看见 这意味着,如果抽象setTimeout并将其用作调度程序,则可以从错误请求中恢复

// Simple example
function runSchedular(s)
{
    setTimeout(function() {
        if (s.ptr < callQue.length) {
            // Handles rescheduling if needed by pushing the que.
            s = s.callQue[s.ptr++](s);
        } else {
            s.ptr = 0;
            s.callQue = [];
            s.t = 200;
        }
        runSchedular(s);
    }, s.t);
}
//简单示例
函数运行调度程序
{
setTimeout(函数(){
if(s.ptr
// Simple example
function runSchedular(s)
{
    setTimeout(function() {
        if (s.ptr < callQue.length) {
            // Handles rescheduling if needed by pushing the que.
            s = s.callQue[s.ptr++](s);
        } else {
            s.ptr = 0;
            s.callQue = [];
            s.t = 200;
        }
        runSchedular(s);
    }, s.t);
}