我在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行"数据:否]
是否可以调整此元素的大小,还是必须销毁它并动态创建新元素?
我试图了解一些不那么琐碎的承诺/异步用例.在我目前正在努力的一个例子中,我有一个从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,因为这些数据是标准化的.作者可能存在也可能不存在,因此我需要:
但是,上述操作也都是异步的.
我可以在原始映射中使用promise(获取和/或插入ID)作为插入操作的先决条件.但问题在于,因为所有内容都是异步运行的,所以代码可能会插入重复的作者,因为初始check-if-author-exists与insert-a-new-author块分离.
我可以想到实现上述目标的几种方法,但它们都涉及拆分承诺链,而且通常看起来有点混乱.这似乎是一种必须出现的问题.我确定我在这里缺少一些基本的东西!
有小费吗?