Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.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 等待angular在套接字连接后渲染元素_Javascript_Angularjs_Sockets_Socket.io_Render - Fatal编程技术网

Javascript 等待angular在套接字连接后渲染元素

Javascript 等待angular在套接字连接后渲染元素,javascript,angularjs,sockets,socket.io,render,Javascript,Angularjs,Sockets,Socket.io,Render,当有一个成功的套接字connect并且angular渲染元素时,我想触发一个函数 Ex. <canvas id="{{currentUserId}}"></canvas> Ex。 我希望在代码中包含以下内容: socket.on('connect',function(){ until(<above canvas is present>) callMe(); }); socket.on('connect',function()){ 直至() c

当有一个成功的套接字
connect
并且
angular
渲染元素时,我想触发一个函数

Ex. <canvas id="{{currentUserId}}"></canvas>
Ex。
我希望在代码中包含以下内容:

socket.on('connect',function(){
  until(<above canvas is present>)
    callMe();
});
socket.on('connect',function()){
直至()
callMe();
});
找到了使用库的解决方案:

socket.on('connect',function(){
    async.until(
      function(){
        return $('#canvasId').length > 0;
      },
      async.ensureAsync(
        function(retry){
        console.log('trying');
        retry(null,null);
        }
      ),
      function(err,result){
        console.log('rendered');
        callMe();
      }
    );
  });
解释如下:

async.until(test,async.ensureAsync(fn),callback){}

test : return true/false, if returns false fn will be called and this will repeat until true is returned and on that final callback is called

fn: do some action, for my case I just wanted to wait, so I am not performing any action

async.ensureAsync(fn) : ensures that one fn is called in one tick and prevents stack overflow if there are too many attempts

callback: is called when test returns true

能否将
回调
添加到调用
套接字
的函数中?socket.on('connect',…)是一个事件,因此某些函数不会调用它。