@Domenic有一篇关于jQuery延迟对象失败的非常详尽的文章:你错过了Point of Promises.在其中,Domenic突出了jQuery承诺的一些失败,与其他包括Q,when.js,RSVP.js和ES6承诺相比.
我离开了Domenic的文章,认为jQuery承诺在概念上有一个固有的失败.我试图把这个例子放在这个概念上.
我认为jQuery实现有两个问题:
.then方法不可链接换一种说法
promise.then(a).then(b)
Run Code Online (Sandbox Code Playgroud)
jQuery将调用a随后b的时候promise满足.
由于.then在其他promise库中返回一个新的promise,它们的等价物将是:
promise.then(a)
promise.then(b)
Run Code Online (Sandbox Code Playgroud)
另一个问题似乎是异常处理,即:
try {
promise.then(a)
} catch (e) {
}
Run Code Online (Sandbox Code Playgroud)
Q中的等价物是:
try {
promise.then(a).done()
} catch (e) {
// .done() re-throws any exceptions from a
}
Run Code Online (Sandbox Code Playgroud)
在jQuery中,当acatch块失败时异常抛出并出现气泡.在其他承诺中,任何异常a将被传递到.done或.catch或其他异步捕获.如果没有任何promise API调用捕获异常,它就会消失(因此Q最佳实践,例如使用.done释放任何未处理的异常).
上述问题是否涵盖了jQuery实现承诺的问题,还是我误解或遗漏了问题?
编辑 此问题与jQuery <3.0; 从 jQuery 3.0开始,alpha jQuery是Promises/A +兼容的.
当使用Vim,并给出一个充满代码的目录(例如〜/ trunk /)和许多子目录时,有没有办法在整个源代码中grep /搜索文本/正则表达式的实例?
目前我使用:
:lcd ~/trunk
:grep "pattern" *.py */*.py */*/*.py */*/*/*.py
Run Code Online (Sandbox Code Playgroud)
(显然我将此限制为Python文件,这是一个不同的问题,但值得注意的是,理想情况下我想将搜索限制为具有特定扩展名的文件.)
给出一组典型的模型:
# Application A
from django.db import models
class TypicalModelA(models.Model):
the_date = models.DateField()
# Application B
from django.db import models
class TypicalModelB(models.Model):
another_date = models.DateField()
...
Run Code Online (Sandbox Code Playgroud)
如何将所有 DateFields 的默认小部件更改为自定义MyDateWidget?
我问,因为我希望我的应用程序有一个jQueryUI datepicker用于输入日期.
我考虑过一个自定义字段,它使用我的自定义小部件扩展django.db.models.DateField.这是实施这种全面改变的最佳方式吗?这样的改变需要专门将一个特殊的MyDateField导入到每个模型中,这是一个劳动密集型,容易出现开发人员错误(即一些模型.DateField将会通过),在我看来似乎是不必要的重复工作.另一方面,我不喜欢修改可以被认为是规范版本的模型.DateField.
感谢思想和投入.
虽然localStorage的大小已经详细解决并且有一个在线测试,但我想知道sessionStorage对于常见浏览器的最大大小是多少?
如果你在Postscript中有一个大文件(500页+)并想要添加页码,有人知道怎么做吗?
是否有Python转换wiki markup为其他语言的模块(例如HTML)?
这里有一个类似的问题,将wiki标记转换为html的最简单方法是什么,但没有Python提到任何模块.
只是好奇.:)干杯.
当我在Google App Engine中运行Jinja2时,我得到了无用的调试信息.我收集这是因为FAQ中的这个项目:
我的追溯看起来很奇怪.发生了什么?
如果未编译speedups模块并且您使用的是没有ctypes的Python安装(没有ctypes的Python 2.4,Jython或Google的AppEngine),Jinja2无法提供正确的调试信息,并且回溯可能不完整.目前没有针对Jython或AppEngine的良好解决方法,因为ctypes在那里不可用,并且不可能使用speedups扩展.
虽然目前没有"良好"的解决方法,是否有任何解决方法,以便在出现异常时打印的信息可以更有帮助?
谢谢你的阅读.
布赖恩
我正在尝试将jQuery模板插入到Jinja2模板中.唉,他们(在默认设置中)分别使用胡须{{和}}表示表达式和文字.
我将我的jQuery模板插入带有script标签的HTML中,如下所示:
<script type='text/x-jquery-template'>
<div>The people are:
{{ each people }}
${$value}
{{ /each }}
</div>
</script>
Run Code Online (Sandbox Code Playgroud)
然而,如果上面是Jinja模板,它就会因为Jinja试图将其解释each为文字而贬低.
在这种情况下(我们已经有很多模板),改变Jinja2的变量开始和结束分隔符是不切实际的.此外,它令人困惑,降低了互操作性,并需要额外的培训.最好避免使用此选项.
所以我想到的两个替代方案就是:
Jinja2逃避每个'{{'和'}}',我不太确定如何做得最好("{{"{{"}}`,也许,但这很冗长);
更实际 - 也许是理想的 - 会告诉Jinja2 不要解析代码块,也许是通过jQuery扩展.
我很感激你的想法和反馈.谢谢你的阅读.
使用内容安全策略时,我尝试使用window.URL.createObjectURL关注Chrome 41(测试版)中的过程,我收到如下错误:
拒绝从'blob:http%3A // localhost%3A7000/f59612b8-c760-43a4-98cd-fe2a44648393'加载插件数据,因为它违反了以下内容安全策略指令:"object-src blob://*"
使用内容安全策略限制object-src或以其他方式default-src可以重现问题(为方便起见使用jQuery),如下所示:
blob = new Blob(
["%PDF-1.\ntrailer<</Root<</Pages<</Kids[<</MediaBox[0 0 3 3]>>]>>>>>>"],
{ type: "application/pdf" })
$("<embed>").attr("src", window.URL.createObjectURL(blob))
.appendTo(document.body)
Run Code Online (Sandbox Code Playgroud)
从规范看来,这应该起作用,就像它一样data://*.我曾尝试也blob,blob:,blob:*,blob:http*,blob:http:*,blob:http://*,但无济于事.
什么工作,但由于明显的原因是不可取的,是object-src *.
有没有人在使用内容安全策略加载blob方面有什么成功?这是上游的问题,还是我忽略了什么?
如何在Python中创建临时FIFO(命名管道)?这应该工作:
import tempfile
temp_file_name = mktemp()
os.mkfifo(temp_file_name)
open(temp_file_name, os.O_WRONLY)
# ... some process, somewhere, will read it ...
Run Code Online (Sandbox Code Playgroud)
但是,由于Python Docs 11.6中的重大警告以及潜在的删除,我犹豫不决,因为它已被弃用.
编辑:值得注意的是,我已尝试tempfile.NamedTemporaryFile(并通过扩展tempfile.mkstemp),但os.mkfifo抛出:
OSError -17:文件已存在
当您在mkstemp/NamedTemporaryFile创建的文件上运行它时.