Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.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 node.js express response.write()在Safari中不异步_Javascript_Node.js_Express_Safari - Fatal编程技术网

Javascript node.js express response.write()在Safari中不异步

Javascript node.js express response.write()在Safari中不异步,javascript,node.js,express,safari,Javascript,Node.js,Express,Safari,我有一个非常简单的node.js服务器,用来ping一些需要保持在线的服务器 使用我有一个非常简单的端点,我可以访问它,它将执行请求循环并报告结果 在每个循环中使用res.write(),我加载的网页可以显示正在发生的进度 问题是,在osx或iOS上的Safari中,这种进展都不会发生。它一直等到进程完成,然后一次性转储整个输出 下面是我的代码示例: router.route('/test').get(function(req, res) { res.write('<html>

我有一个非常简单的
node.js
服务器,用来ping一些需要保持在线的服务器

使用我有一个非常简单的端点,我可以访问它,它将执行请求循环并报告结果

在每个循环中使用
res.write()
,我加载的网页可以显示正在发生的进度

问题是,在
osx
iOS
上的
Safari
中,这种进展都不会发生。它一直等到进程完成,然后一次性转储整个输出

下面是我的代码示例:

router.route('/test').get(function(req, res)
{
    res.write('<html><head></head><body>');
    res.write('Starting tests...<br />');
    performServerTests(req, res, function(results)
    { // Each loop within performServerTests also uses res.write()
        res.write('<br />Complete');
        res.end('</body></html>');
    });
});
router.route('/test').get(函数(req,res)
{
res.write(“”);
res.write('开始测试…
'); PerformServer测试(请求、恢复、功能(结果) {//performServerTests中的每个循环也使用res.write() res.write(“
完成”); res.end(“”); }); });
Safari在显示它已经拥有的内容之前会等待
res.end()
调用,而Chrome在收到消息时会显示每个
res.write()
消息,这有什么已知的原因吗


多亏了当使用分块传输(您正在尝试做的事情)时,浏览器通常会在开始渲染之前等待接收到最少的数据量。确切的大小取决于浏览器-有关这方面的一些最新数据点,请参阅。 例如,您可以这样编写示例(添加一些显式标题):

router.route('/test').get(函数(req,res)
{
res.setHeader('Content-Type','text/html;charset=UTF-8');
res.setHeader('Transfer-Encoding','chunked');
res.write(“”);
res.write('开始测试…
'); var buf=“” 对于(变量i=0;i<500;i++){ buf+=“” } res.write(buf); PerformServer测试(请求、恢复、功能(结果) {//performServerTests中的每个循环也使用res.write() res.write(“
完成”); res.end(“”); }); });
当使用分块传输(您正在尝试执行的操作)时,浏览器通常会在开始渲染之前等待接收到最少的数据量。确切的大小取决于浏览器-有关这方面的一些最新数据点,请参阅。 例如,您可以这样编写示例(添加一些显式标题):

router.route('/test').get(函数(req,res)
{
res.setHeader('Content-Type','text/html;charset=UTF-8');
res.setHeader('Transfer-Encoding','chunked');
res.write(“”);
res.write('开始测试…
'); var buf=“” 对于(变量i=0;i<500;i++){ buf+=“” } res.write(buf); PerformServer测试(请求、恢复、功能(结果) {//performServerTests中的每个循环也使用res.write() res.write(“
完成”); res.end(“”); }); });
当使用分块传输(您正在尝试执行的操作)时,浏览器通常会在开始渲染之前等待接收到最少的数据量。确切的大小取决于浏览器-有关这方面的一些最新数据点,请参阅。 例如,您可以这样编写示例(添加一些显式标题):

router.route('/test').get(函数(req,res)
{
res.setHeader('Content-Type','text/html;charset=UTF-8');
res.setHeader('Transfer-Encoding','chunked');
res.write(“”);
res.write('开始测试…
'); var buf=“” 对于(变量i=0;i<500;i++){ buf+=“” } res.write(buf); PerformServer测试(请求、恢复、功能(结果) {//performServerTests中的每个循环也使用res.write() res.write(“
完成”); res.end(“”); }); });
当使用分块传输(您正在尝试执行的操作)时,浏览器通常会在开始渲染之前等待接收到最少的数据量。确切的大小取决于浏览器-有关这方面的一些最新数据点,请参阅。 例如,您可以这样编写示例(添加一些显式标题):

router.route('/test').get(函数(req,res)
{
res.setHeader('Content-Type','text/html;charset=UTF-8');
res.setHeader('Transfer-Encoding','chunked');
res.write(“”);
res.write('开始测试…
'); var buf=“” 对于(变量i=0;i<500;i++){ buf+=“” } res.write(buf); PerformServer测试(请求、恢复、功能(结果) {//performServerTests中的每个循环也使用res.write() res.write(“
完成”); res.end(“”); }); });
谢谢你的解释。你在哪里就在哪里。Safari在开始显示之前需要更多的数据。非常感谢!谢谢你的解释。你在哪里就在哪里。Safari在开始显示之前需要更多的数据。非常感谢!谢谢你的解释。你在哪里就在哪里。Safari在开始显示之前需要更多的数据。非常感谢!谢谢你的解释。你在哪里就在哪里。Safari在开始显示之前需要更多的数据。非常感谢!
router.route('/test').get(function(req, res)
{
    res.setHeader('Content-Type', 'text/html; charset=UTF-8');
    res.setHeader('Transfer-Encoding', 'chunked');
    res.write('<html><head></head><body>');
    res.write('Starting tests...<br />');
    var buf = ""
    for (var i = 0; i < 500; i++) {
        buf += " "
    }
    res.write(buf);
    performServerTests(req, res, function(results)
    { // Each loop within performServerTests also uses res.write()
        res.write('<br />Complete');
        res.end('</body></html>');
    });
});