首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >回调/ que加载-完成后调用函数

回调/ que加载-完成后调用函数
EN

Stack Overflow用户
提问于 2010-09-08 01:26:25
回答 2查看 227关注 0票数 0

当所有的imageData变量都被填充后,调用render()的最佳方式是什么?

我是否可以使用回调来依次调用它们,然后调用render,或者是否有更好的方法?

代码语言:javascript
复制
function loadImageData()
    {

        //Get Background Image Data
        var backgroundImg = loadImage(background, function(){
            backgroundData = getDataFromImage(backgroundImg);
        }); 

        //Get Overlay Image Data
        var overlayImg = loadImage(overlay, function(){
            overlayData = getDataFromImage(overlayImg);

        }); 

        //Get more Image Data
        //Get more Image Data
        //Get more Image Data

    }

    function render()
    {
        ctx.putImageData(backgroundData, 0,0);
    }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-09-08 01:37:44

我的方法包括创建一个你需要的回调次数的“计数器”,如下所示:

代码语言:javascript
复制
function loadImageData()
{
  var counter = 5;
  function imageReceived() {
    if (--counter == 0) render();
  }
  //Get Background Image Data
  var backgroundImg = loadImage(background, function(){
    backgroundData = getDataFromImage(backgroundImg);
    imageReceived();
  }); 

  //Get Overlay Image Data
  var overlayImg = loadImage(overlay, function(){
    overlayData = getDataFromImage(overlayImg);
    imageReceived();
  }); 

    //Get more Image Data
    //Get more Image Data
    //Get more Image Data

当然,我可能会以这样一种方式重写它,即在loadImage()函数中增加等待请求的数量,并有一个全局回调,只要等待请求的数量回到0,就会触发该回调。

票数 0
EN

Stack Overflow用户

发布于 2010-09-08 01:31:25

从回调函数内部,将各个图像元素“渲染”到画布上。

代码语言:javascript
复制
    var backgroundImg = loadImage(background, function(){
        backgroundData = getDataFromImage(backgroundImg);
        ctx.putImageData(backgroundData, 0,0);
    }); 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3661067

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档