【问题标题】:draw() on finish callbackdraw() 完成回调
【发布时间】:2019-03-23 03:00:27
【问题描述】:

我正在尝试找到任何 回调/事件 可以通知我有关层 draw() 方法的完成。

我想要这样的:

var layer = new Konva.Layer();
layer.draw(() => console.log('Draw finished'))

或者:

var layer = new Konva.Layer();
layer.on('redraw', () => console.log('Draw finished'))
layer.draw()

【问题讨论】:

    标签: javascript konvajs


    【解决方案1】:

    layer.draw() 是一个同步函数。所以你不需要为它使用回调。

    你可以这样做:

    layer.draw();
    console.log('Draw finished')
    

    如果你需要一个活动,你可以使用这个:

    layer.on('draw', () => {
      console.log('Draw finished')
    })
    

    【讨论】:

      【解决方案2】:

      您可以使用两个函数来获取回调。例如,您可以采用这种或类似的方法,因为 javascript 是异步语言。

      理论上,您可以将您的绘图放在 callit 函数中,并在其后放置一个回调,因此它会调用另一个函数来扩展它。

      callit(clb_extend, 'Steve');
      
      function clb_extend(name) {
      	console.log('after 5 prints, Im called: '+name);
      }
      
      function callit(clb,smname) {
      	for(var i=0; i<5;i++) {
        	console.log('Look I am printing');
        }
      	
        clb(smname);
      }

      所以在 5 次打印之后,它会打印出你告诉过的东西,你可以使用它并避免使用纯同步,所以其余的代码仍然可以运行,而无需考虑他需要先完成那个。否则,您可以尝试使用 Promise 和 .then 函数。你可以在类似的问题上阅读它。 How should I call 3 functions in order to execute them one after the other?

      【讨论】:

        猜你喜欢
        • 2018-05-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-01-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-11
        相关资源
        最近更新 更多