ES2020 包含一个新String.prototype.matchAll方法,它返回一个迭代器。我确定我错过了一些愚蠢/明显的东西,但我不明白为什么它不只是返回一个数组。
有人可以解释一下那里的逻辑吗?
编辑:只是为了澄清评论中的一些内容,我假设迭代器并没有简单地替换数组,因为所有 JS API 的新方式都会返回多个值。如果我错过了那个备忘录,并且所有新的 JS 函数都返回迭代器,那么指向所述备忘录的链接将 100% 成为有效答案。
但同样,我怀疑没有进行这样的全面更改,并且 Javascript 的制造商为这个特定的方法做出了一个特定的选择,让它返回一个迭代器......而这个选择的逻辑就是我'我试图理解。
注意:这主要是关于 Node-PostgreSQL 模块的问题pg。它包含来自 Gatsby 和 Postgraphile 的详细信息,但我不需要这三个方面的专业知识,只需pg.
我有一个数据库,可以与使用 PostGraphile 的 Express 服务器配合使用。node我还可以通过命令行访问它......
const { Pool } = require("pg");
const pool = new Pool({ connectionString: myDbUrl });
pool.connect().then(() => console.log('connected'));
// logs 'connected' immediately
Run Code Online (Sandbox Code Playgroud)
完全相同的数据库之前也通过gatsby-source-pg插件与 Gatsby/PostGraphile 配合得很好...但最近我更换了开发机器,当我尝试构建或运行开发服务器时,Gatsby 挂在“源和转换节点”步骤上。当我调试它时,它挂在对 的调用上pool.connect()。
所以我实际上有两个使用 PostGraphile 的代码库,两者都具有相同的配置,一个可以工作,另一个则不能。更奇怪的是,如果我编辑 Gatsby 插件的源代码node_modules,使其使用完全相同的代码(我可以在命令行成功运行)......它仍然挂起。
我唯一能想到的是其他一些 Gatsby 插件正在耗尽所有连接并且没有释放它们,但据我所知(例如通过 grep-ing through node_modules)没有其他插件甚至使用pg.
所以我真的有两个问题:
A)谁能帮我理解为什么connect会挂起?如果你能帮助我理解为什么它会使用已知良好的配置并且仅在 Gatsby 内部(在某些环境因素发生变化后)这样做,那就加分了?
B) 谁能帮我解决这个问题吗?如果可能是某种“以前的代码忘记释放连接”问题,有什么方法可以测试吗?如果我能以某种方式记录,new …
我有一个坦白:我不知道Lisp.尽管如此,在一些同事的帮助下,我设法写了一个emacs宏/脚本:
然后我可以使用--script选项启动带有该宏的emacs,然后突然我有一种方法可以在一个更友好的环境中用一个命令启动mysql :-)
但问题出在这里:我改变了工作并将这个脚本抛在身后.现在我非常想在我的新工作中重新创建该脚本,但我不再有任何emacs专家来帮助我像在旧工作中那样编写它.
现在,我真的讨厌SO帖子,有人基本上说"请为我写代码",所以我不想这样做.但是,如果任何emacs宏专家至少可以给我一些指针(比如"这里是你如何在宏中调用Mx命令"),或者指向一个emacs-macro-writing指南,或者"教我钓鱼"在这个问题上,我将不胜感激.
...如果有人恰好有一个类似的脚本已经躺在他们想要发布,我当然不会抱怨;-)
我必须更新Django应用程序中的auth.user记录,以便为某些用户翻转"is_staff"位.我可以使用SQL脚本执行此操作,但如果我可以使用South数据迁移,则会更方便.
但是,每当我尝试manage.py datamigration auth whatever南方时,都会创建迁移lib/python2.7/site-packages/django/contrib/auth/migrations.这是否意味着使用南数据迁移来迁移用户数据是不可能的?或者是否有一些我缺少的解决方法?
我以为我理解了整个道具与attr的关系,但我只是遇到了一个让我质疑这种理解的案例.
我正在编写一个Backbone View的测试,它生成一个表,我的测试基本上做了以下事情:
// assert that $table.find('input[value="foo"]').length == 2
$table.find('input[value="foo"]:first').val('bar');
// assert that $table.find('input[value="foo"]').length == 1
Run Code Online (Sandbox Code Playgroud)
奇怪的是,第二个断言失败了.在经历了大量的撞击之后,我终于尝试了:
// assert that $table.find('input[value="foo"]').length == 2
$table.find('input[value="foo"]:first').attr('value', 'bar');
// assert that $table.find('input[value="foo"]').length == 1
Run Code Online (Sandbox Code Playgroud)
瞧,我的考试通过了.
现在,我希望我可以发布所有相关代码的小提琴,但是有太多的方法(表单单独查看是685行),但我正在寻找一般理解类型的答案,而不是特定的"修复X in你的代码".而我想要了解的是,为什么会出现这样的情况:
$table.find('input[value="foo"]:first').val('bar');
Run Code Online (Sandbox Code Playgroud)
什么都不做,同时:
$table.find('input[value="foo"]:first').attr('value', 'bar');
Run Code Online (Sandbox Code Playgroud)
按预期工作?
PS我不应该说.val('bar')什么都没做; 如果我.val()事后做了它会显示值已经改变了...但是如果我检查了实际的元素,或者使用了新的选择器,或者类似的东西,很明显它val没有真正改变任何东西.这只会让我更加困惑.
我总是以下列格式看到JSDoc(和之前的JavaDoc):
/**
* This is some JSDoc ...
* ... and some more
*/
function foo() {
Run Code Online (Sandbox Code Playgroud)
但是,我的同事不希望没有最初的星号,即:
/**
This is some JSDoc ...
... and some more
*/
function foo() {
Run Code Online (Sandbox Code Playgroud)
当我在Eclipse中尝试这个时,它仍然将代码识别为JSDoc(它的颜色与非JSDoc注释不同).但是,当我查看JSDoc网站时,所有的例子都包括星号......但是再一次,我找不到任何说它们都需要的东西(说实话,JSDoc网站似乎很糟糕).
所以,鉴于我甚至找不到JSDoc是什么/不是什么的正确规范,我想我会问Stack Overflow.这里的任何人都可以指出:
A)某种规范参考(例如来自JSDoc网站的东西)说初始星号是不需要的
B)没有初始星号的例子会有问题(例如"你不能使用酷的JSDoc库X,除非你有初始的星号")
*编辑*
为了澄清,我们目前不使用JSDoc文档生成器.这个问题更多地来自于希望以行业标准的方式格式化我们的评论,并希望(将来的某一天)能够使用依赖于JSDoc标准的工具(例如JSDOc documentaiton生成器).
基本上我并不关心我的同事如何格式化他的JSDoc,我只是不希望非标准的练习在将来引起问题(如果我们将来有这样的问题,我会喜欢能够向他解释而不只是说"我不喜欢你格式化JSDoc的方式".
背景故事:
我目前使用网站获得了Require.js和jQuery/Backbone.js.到现在为止,jQuery和Backbone都不在Require之外,让我这样做:
define([], function() {
// NOTE: Using Backbone and $ without an import!
new Backbone.View(el: $('#foo');
});
Run Code Online (Sandbox Code Playgroud)
这非常有效:如果没有这种方法,我站点中的每个模块都必须添加Backbone/jQuery依赖项.
但是前几天我需要将一部分代码打包为外部库.我为它做了一个单独的require配置文件,一切看起来都很棒,直到我将所有文件编译("优化")到一个库文件中,并意识到Backbone/jQuery(以及相关的插件/库)不是'包括在内.
所以,我添加了一堆填充程序,并将Backbone,jQuery和所有相关库添加到Require中.但是,我仍然有大量期望$和Backbone存在的模块.这应该没问题,因为Backbone/jQuery都在全局注册它们的变量,但这不是因为Require的加载顺序.
基本上,任何没有依赖关系的模块都会被破坏,因为它们在Require加载jQuery/Backbone填充程序之前加载.任何具有依赖项的模块都没有这个问题,因为jQuery/Backbone在加载时已经加载了.
似乎我唯一的选择是在没有依赖项的情况下为每个模块添加一个显式的Backbone/jQuery.虽然我有很多这样的模块,理想情况下我不想在任何地方导入jQuery/Backbone.
题
所以,我的问题是:有没有办法告诉要求"在加载其他所有内容之前加载这些X模块/填充程序"?或者,换句话说,有没有办法告诉要求我的所有模块都依赖于某些其他模块?
我认为将Backbone置于我最初要求的顶部:
require(['backbone', ...
Run Code Online (Sandbox Code Playgroud)
但这没有帮助; 其他无依赖模块仍然在它之前加载.
我正在看AVA测试运行器,它的并发功能似乎非常引人注目.但是,我习惯了Mocha,你可以在这里组织你的测试:
describe('Some Class', () => {
describe('#someMethod', () => {
describe('some condition', () => {
it('does something', () => {});
});
});
});
Run Code Online (Sandbox Code Playgroud)
通过以这种方式组织测试,您可以轻松地告知在一堆测试失败时哪些组件受到影响,并且您可以轻松地重新运行特定类/方法/条件的测试.
但AVA没有这些.它的测试完全没有任何"元信息",只是:
test(t => {
t.deepEqual([1, 2], [1, 2]);
});
Run Code Online (Sandbox Code Playgroud)
但显然AVA是一个流行且广泛使用的框架,所以我的问题是:没有测试元信息它如何工作?还有其他一些在AVA中定义元信息的方法吗?由于AVA的其他功能,是不是需要元信息?
基本上,作为一个AVA局外人,我试图了解当你有一个真正的测试套件时它是如何工作的(不仅仅是AVA例子中显示的基本测试).换句话说,如果我切换到AVA,我是否会错过Mocha(以及大多数其他测试跑步者)的测试组织?
早在2005年,Quirksmode.com发布了这篇文章:
http://www.quirksmode.org/dom/classchange.html
通过更改其类(即"elem.className = x")来改变元素样式的"证据"几乎是通过其样式属性更改其样式的两倍(即"elem.style.someStyle = x"),但在Opera中除外.作为该文章的结果,我们开始使用基于className的解决方案来执行在我们的网站上显示/隐藏元素的事情.
问题是,我们的开发人员之一宁愿使用jQuery的等效方法来处理这类事情(即"$(某事).hide()"),而且我很难说服他们基于className.功能是值得使用的,因为我只能找到四年前写的一篇文章.
有谁知道有关此问题的最近或更全面的调查?
语法问题...我试图找出在较新的React const渲染方法中设置proptypes的位置.
在这个const中,我将在哪里放置propTypes:{...}块?
const PlaylistAlbumInfoOverlay = () => (
<div className="playlist-album-info-overlay">
<h2>Album Title</h2>
<p className="album-kind">Private</p>
</div>
);
export default PlaylistAlbumInfoOverlay;
Run Code Online (Sandbox Code Playgroud) javascript ×3
ava ×1
backbone.js ×1
django ×1
django-south ×1
emacs ×1
gatsby ×1
jquery ×1
jsdoc ×1
macros ×1
node.js ×1
performance ×1
postgraphile ×1
reactjs ×1
regex ×1
requirejs ×1
testing ×1