小编rus*_*sx2的帖子

如何调整html canvas元素的大小?

我在html中静态定义了一个宽度和高度的canvas元素.如果我尝试使用JavaScript动态调整大小(设置新的宽度和高度 - 无论是在画布的属性上还是通过样式属性),我在Firefox中都会出现以下错误:

未捕获的异常:[异常......"WrappedNative原型对象上的非法操作"nsresult:"0x8057000c(NS_ERROR_XPC_BAD_OP_ON_WN_PROTO)"location:"JS frame :: file:///home/russh/Desktop/test.html :: onclick ::第1行"数据:否]

是否可以调整此元素的大小,还是必须销毁它并动态创建新元素?

html javascript dhtml canvas

46
推荐指数
4
解决办法
15万
查看次数

思考JavaScript承诺(在这种情况下蓝鸟)

我试图了解一些不那么琐碎的承诺/异步用例.在我目前正在努力的一个例子中,我有一个从knex查询(可成组数组)返回的书籍数组我希望插入到数据库中:

books.map(function(book) {

  // Insert into DB

});
Run Code Online (Sandbox Code Playgroud)

每个书籍项目如下:

var book = {
    title: 'Book title',
    author: 'Author name'
};
Run Code Online (Sandbox Code Playgroud)

但是,在我插入每本书之前,我需要从一个单独的表中检索作者的ID,因为这些数据是标准化的.作者可能存在也可能不存在,因此我需要:

  • 检查作者是否存在于DB中
  • 如果是,请使用此ID
  • 否则,插入作者并使用新ID

但是,上述操作也都是异步的.

我可以在原始映射中使用promise(获取和/或插入ID)作为插入操作的先决条件.但问题在于,因为所有内容都是异步运行的,所以代码可能会插入重复的作者,因为初始check-if-author-exists与insert-a-new-author块分离.

我可以想到实现上述目标的几种方法,但它们都涉及拆分承诺链,而且通常看起来有点混乱.这似乎是一种必须出现的问题.我确定我在这里缺少一些基本的东西!

有小费吗?

javascript asynchronous node.js promise bluebird

12
推荐指数
1
解决办法
614
查看次数

标签 统计

javascript ×2

asynchronous ×1

bluebird ×1

canvas ×1

dhtml ×1

html ×1

node.js ×1

promise ×1