在完成回调时使用draw()

时间:2018-10-18 10:08:38

标签: javascript konvajs

我正在尝试找到任何可以通知我第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()

2 个答案:

答案 0 :(得分:2)

layer.draw()是一个同步功能。因此,您无需为此使用回调。

您可以这样做:

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

如果您需要活动,可以使用此功能:

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

答案 1 :(得分:1)

您可以使用两个函数来获取回调。例如,您可以使用此方法或类似方法,因为javascript是异步lang。

从理论上讲,您可以将绘制放入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?