首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ClojureScript,菲格轮,发展卡,种族状况

ClojureScript,菲格轮,发展卡,种族状况
EN

Stack Overflow用户
提问于 2016-10-27 21:15:10
回答 1查看 85关注 0票数 1

这是我最小的失败案例。

代码语言:javascript
复制
(ns hello
  (:require-macros [devcards.core :as dc])
  (:require [reagent.core :as r]
            [devcards.core :as dc]
            [gamma.api :as g]
            [gamma.program :as p]
            [goog.dom :as gdom]
            [goog.webgl :as ggl]))


(defn main []
  (let [canvas (.getElementById js/document "webgl")
        gl (.getContext canvas "webgl")] ;; *** THIS LINE ***
    (.clearColor gl 0.0 0.0 0.0 1.0)
    (.clear gl gl.COLOR_BUFFER_BIT)))


(dc/defcard-rg canvas-example
  [:div
   [:canvas {:width 600
             :height 600
             :id "webgl"}]])


(main)

下面是当我把它加载到小方格/devcard中时会发生的事情。

  1. 第一次加载页面:“无法读取属性'getContext‘of null”在*此行*上。这是因为开发卡画布还没有安装好。
  2. 如果我做了一个毫无意义的更改并保存文件,代码就会重新加载并正常工作。这是因为开发卡画布已经安装好了。
  3. 很明显,这是在(a)运行(main)和(b)安装devcard的:画布之间的竞争条件。
  4. 我该怎么解决这个问题?理想情况下,我想在画布上贴上一个标签,上面写着“在此之后运行主函数.”
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-28 00:41:17

好吧,我想出来了。

最简单的解决方案(即不涉及对devcard /试剂进行黑客攻击)是让单独的cljs/go线程每50 is检查一次,查看元素是否存在,如果存在,则执行该函数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40294307

复制
相关文章

相似问题

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