小编vit*_*y-t的帖子

实现Promise.all和Promise.settle的混合

我需要实现一个版本Promise.all,它将采用一系列的promises并返回结果,并且还会解决所有的承诺,就像Promise.settleBluebird库中一样,除了我不能使用Bluebird,并且必须依赖于标准承诺协议.

实施起来会非常复杂吗?或者在这里问一下如何实现它的想法太过分了?我真的希望不是,所以我问,如果有人可能之前实现它,分享如何做到正确的想法.

这样做的前提是能够在需要执行commit/ rollback一旦调用完成的数据库事务中使用它,并且它仍然没有松散的承诺仍然试图在事务调用之外解析.

编辑:提供给另一个问题的链接非常有用,但它并不是对所提问题的完整答案.泛型settle是一个很好的例子,它有很多帮助,但它需要简化并包装成all逻辑以适应前面描述的事务场景.

javascript promise bluebird

5
推荐指数
2
解决办法
697
查看次数

为测试模拟流`error`事件

我正在使用最新的istanbul + jasmine-node来编写我的所有测试脚本.

在一些地方,我有一个可读的流可能会发出error事件,我不知道如何在测试环境中模拟这样的事件,以提供代码覆盖.

请问有人建议如何处理这个问题吗?

stream node.js jasmine jasmine-node istanbul

5
推荐指数
1
解决办法
1418
查看次数

带有换行符的列名

我知道对于PostgreSQL中的文本字符串,通过附加符号Ee在文本前面来统一换行符:

SELECT E'first\nsecond'
Run Code Online (Sandbox Code Playgroud)

结果是:

first
second
Run Code Online (Sandbox Code Playgroud)

但PostgreSQL也支持列名中的换行符 - 不知道为什么或这种做法有多邪恶,但可以做到以下几点:

CREATE TABLE One("first\nsecond" text);
CREATE TABLE Two("first
second" text);
Run Code Online (Sandbox Code Playgroud)

当你不幸碰到其中一个时,你会发现虽然这些查询有效:

SELECT "first\nsecond" from One;
SELECT "first
second" from Two;
Run Code Online (Sandbox Code Playgroud)

这些不是:

SELECT "first
second" from One;
SELECT "first\nsecond" from Two;
Run Code Online (Sandbox Code Playgroud)

我的问题是:PostgreSQL中是否有一种方法可以统一这些差异,类似于列值的情况?

我试过放在列名E前面"first\nsecond",但是不支持它.试图\r\n改为(我正在使用Windows)给了我第三种类型的列名,只能查询为:

SELECT "first\r\nsecond" FROM Third
Run Code Online (Sandbox Code Playgroud)

postgresql

5
推荐指数
1
解决办法
1505
查看次数

没有`.then`的承诺

使用仅有.catch部分的承诺是否有任何缺点,但完全没有.then

我问的是不需要解析结果的情况,只是错误处理.

这是一个.catch只依赖并跳过的好模式.then吗?

或者它取决于它的承诺实施是什么?

promise

5
推荐指数
1
解决办法
2681
查看次数

检测 Node.js 中的隐藏/系统文件和文件夹

我使用fs.readdir通过递归枚举文件和文件夹,然后使用fs.stat为每个文件获取可访问性详细信息。

我需要根据fs.stat的信息检测所有隐藏文件和系统文件,以便我可以从枚举中跳过它们。

我知道我们获得的属性mode应该对我们有帮助,但我不知道如何正确使用它,因此它可以在每个操作系统上运行。

PS我看到这个问题:How to ignore hide files in fs.readdir result,但答案不好。

fs node.js

5
推荐指数
0
解决办法
1281
查看次数

如何使用.NET Core代理一个完整的网站?

我正在尝试在 .NET Core REST 服务中实现一个简单的代理,这样我就可以注入额外的身份验证标头,然后像普通网站一样将其返回给任何客户端。

简化的形式如下所示:

[HttpGet]
public async Task<ContentResult> Get()
{
    HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, "http://google.com");

    /* some extra headers injection happens here */

    var response = await client.SendAsync(request);
    response.EnsureSuccessStatusCode();
    var result = await response.Content.ReadAsStringAsync();
    return Content(result, "text/html", Encoding.UTF8);
}
Run Code Online (Sandbox Code Playgroud)

问题在于,虽然任何浏览器都能将响应正确呈现为原始 HTML 页面,但返回页面中的任何script或(任何相对 URL)包含都会失败。link

上面的代码中缺少什么才能使浏览器正确解析内部相对 URL?

在上面的示例中,如果我运行它,我会google.com从 my 中显示页面https://localhost:44307/api/test,但相对 URL 中的图像和其他内容丢失,因为它们无法解析内部相对 URL。

在困惑中,我尝试在请求和响应中使用诸如Referer和 之类的属性Host,但没有取得任何进展。


哪里需要它。我们需要通过 IFRAME 使用第三方网站,而该网站需要存在Authorizationheader,因此上面的代理应该做到这一点,然后返回网站,因此可以直接使用 API 链接,如下所示:<iframe src="https://localhost:44307/api/test">- this示例应该google.com在 …

c# .net-core

5
推荐指数
1
解决办法
1184
查看次数

如何使 pg-promise 将行作为数组返回?

我们如何让pg-promise从查询中返回一个行数组,而不是行对象数组?

postgresql node.js pg-promise

4
推荐指数
1
解决办法
2512
查看次数

TypeScript中的可选前导参数

在将JavaScript库协议转换为TypeScript时,我偶然发现了使用前导可选参数,而不是常规/尾随参数.

JavaScript中的方法:

db.task(function (context) {
    // executing task
});
Run Code Online (Sandbox Code Playgroud)

有一个可以在前面注入的任务的可选名称:

db.task('myTaskName', function (context) {
    // executing task
});
Run Code Online (Sandbox Code Playgroud)

这样做是为了使代码更具可读性,将任务名称放在前面,而不是最后的某个地方,这看起来是错误的/不直观的.

如何在TypeScript中围绕这些参数进行编码?

我知道我可以将两个参数声明为可选参数,但情况并非如此,因为回调函数需要作为第一个或第二个参数.如果它使这更简单,我们可以说 - 最后一个参数必须是回调函数.

javascript typescript

4
推荐指数
2
解决办法
974
查看次数

如何为WebStorm配置eslint缩进?

如何设置"indent".eslintr.json以匹配WebStorm使用的默认?

在此处输入图片说明

到目前为止,根据官方文档,我尝试过的所有内容都无法与之匹配:

  • "indent": ["error", 2] -给很多 Expected indentation of 2 spaces but found 4
  • "indent": ["error", 4] -给很多 Expected indentation of 4 spaces but found 8
  • "indent": ["error", 8] -给很多 Expected indentation of 8 spaces but found 4

我完整的eslint配置:

{
  "env": {
    "es6": true,
    "node": true,
    "jasmine": true
  },
  "extends": "eslint:recommended",
  "parserOptions": {
  },
  "rules": {
    "no-else-return": "error",
    "no-multi-spaces": "error",
    "no-whitespace-before-property": "error",
    "camelcase": "error",
    "new-cap": "error",
    "no-console": "error",
    "comma-dangle": "error",
    "no-var": "error", …
Run Code Online (Sandbox Code Playgroud)

javascript webstorm eslint

4
推荐指数
1
解决办法
3593
查看次数

在 npm 安装期间跳过特定模块

在我的开发项目中,我有package.json包含 3 组依赖项:

  • 来自公共 NPN 存储库的标准依赖项
  • 来自需要特定代理配置和权限的内部开发存储库的依赖项
  • 来自需要自己的代理和权限的内部财务存储库的依赖项

我们的构建集成机器是唯一一个能够拉取所有依赖项的设置,而所有开发机器都不能,这造成了依赖安装的噩梦。


是否可以在install命令中告诉 NPM安装所有除外,并提供package.json安装过程中要跳过的模块列表?

否则,考虑到使用所有权限设置所有代理是不现实的,处理这种情况的最佳方法是什么?

npm

4
推荐指数
2
解决办法
4128
查看次数