我正在调用使用 Angular 中的 REST 请求在后端生成 PDF 的进程(我正在使用 restangular 来创建这些)。
我的问题是我希望用户能够在此过程正常工作时继续工作,因为 pdf 生成可能需要一段时间。就像测试一样,我创建了一个服务,它在将数据返回给客户端之前有 5 秒的延迟。我这样称呼它:
        var d = $q.defer();
        Restangular
            .all('delay')
            .getList()
            .then(function (data) {
                d.resolve(data);
            }, function () {
                d.reject();
            });
        return d.promise;
这工作正常,但我在通话完成之前提出的任何其他请求都会被阻止。如果我链接了 .then 函数,我希望会发生这种情况,但我正在调用一个完全独立的 REST 请求。
在返回客户端之前,我必须等待生成 PDF 的服务完成,否则该过程将无法完成。那么我必须等待还是可以同时运行两个或多个 REST 请求?
谢谢!
编辑....似乎没有人对这个问题感兴趣!无论如何,我一直在研究从 php 返回请求以允许 javascript 继续运行的选项,并且这种方式一半有效。这个答案的几个版本散布在stackoverflow周围 - 这个来自here
    public function delay()
{
        ignore_user_abort(true);
        set_time_limit(0);
        ob_start();
        // do initial processing here
        echo 'Text the user will see';
        header('Connection: close');
        header('Content-Length: '.ob_get_length());
        ob_end_flush();
        ob_flush();
        flush();
        // Do processing here 
                    $d = time();            
                    sleep(5);
                    $t = time()-$d;            
        echo('Text user will never see');            
}
    public function runtime()
{
        $d = time();
        $t = time()-$d;            
        return $t;
}
实际上,发生的事情是 php 将响应发送回浏览器,然后继续进行应有的处理。但是,来自客户端的下一个请求仍然等待第一个请求完成处理后再运行。
我想要的行为是让 php 启动一个新线程,就好像我从另一个浏览器调用该方法一样(当然我已经测试过并且它有效)