我在渲染回调上使用了一个监听器,因为最初我想为边缘的每个中点添加一个节点。但是由于在完全渲染图形之前,中点位置是{x:undefined,y:undefined},所以这不起作用。
所以我使用cy.one('render', callback)
并在渲染时直接调用回调,但如果在此回调中添加了元素,则只有在点击地图时才会将这些元素渲染到图表中,即使forceRender()
在回调中调用。
此外,在记录cy.renderer()
然后从控制台调用renderer.redraw()
时,将重新呈现画布并显示元素。那么,为什么forceRender()
不起作用?
我创建了一个JS Fiddle来重现错误。
答案 0 :(得分:0)
我已经使用超时函数进行了测试,发现显然 func viewDidLoad(){
downloadDataFromServer { (success, goodNamesArray) in
if success{
print("goodNamesArray: \(goodNamesArray)")
print("successfully updated tableview data")
self.tableView.reloadData()
}
}
}
func downloadDataFromServer(completionHandler: @escaping(Bool,[String])->()){
guard let url = URL(string: "http://app.avatejaratsaba1.com/api/Values/GetPriceList?paymentType=1&goodType=102") else {
return
}
let request = URLRequest(url: url)
let task = URLSession.shared.dataTask(with: request) { data, response, error in
guard let data = data else {
print("request failed \(String(describing: error))")
return
}
do {
if let json = try JSONSerialization.jsonObject(with: data) as? [[String:Any]] {
var goodNameArray = [String]()
for i in 0..<json.count{
guard let goodName = json[i]["goodName"] as? String else{return}
self.goodNameArray.append(goodName)
}
print("GoodNames: \(self.goodNameArray)")
Global.GlobalVariable.GoodName = goodNameArray
}
} catch let parseError {
print("parsing error: \(parseError)")
let responseString = String(data: data, encoding: .utf8)
print("raw response: \(String(describing: responseString))")
}
}
task.resume()
}
在'render'事件回调中没有工作,可能不会导致任何循环。
此问题的解决方案是在调用forceRender()
之前设置超时:
forceRender()