小编Tho*_*ggi的帖子

是否有一种更简单的方法可以在没有捕获的情况下进行单行尝试?

当我做这样的事情时:

let resolved = null;
try {
    resolved = require.resolve(modulePath)
} catch (e) {

}
Run Code Online (Sandbox Code Playgroud)

我想知道是否有更短的语法,如:

let resolved = null;
try resolved = require.resolve(modulePath)
Run Code Online (Sandbox Code Playgroud)

有没有办法原谅这条线而不打开一个捕获块?

有这样的东西,但我正在寻找更自然的东西:

function t (fn, def) {
    let resolved = def;
    try {
        resolved = fn()
    } catch (e) {

    }
    return resolved;
}
Run Code Online (Sandbox Code Playgroud)

javascript

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

带有@export指令的GraphQL“batchOperations”

几年前,我使用下面来自 Lee Byron 在 React Europe 的 GraphQL 演讲中的幻灯片创建了这个 github 问题。该幻灯片描述了使用所谓的指令的“batchOperations”。当时,这是 GraphQL api 的实验部分,仍然不是得到广泛支持的标准功能。@export

我的问题是现在已经过去了一段时间了。这可能吗?具体来说可以使用 Apollo 吗?我使用 Apollo 服务器检查了对该指令的本机支持,并且游乐场给了我错误Unknown directive @export

我在文档中找到了对该指令的引用:

https://www.apollographql.com/docs/link/links/rest/#export-directive

然而它似乎与指令捆绑在一起@rest

我还在 Apollo 客户端的配置中找到了对指令的引用:

https://www.apollographql.com/docs/devtools/apollo-config/#clientclientonlydirectives-clientclientschemadirectives

幻灯片来自 Lee Byron 关于 GraphQL 显示 @export 指令 API 的演讲

(这只是演讲中的幻灯片,而不是工作代码示例)

如果可能的话,很高兴在示例存储库中看到此功能的工作示例,即使它的形状(API 设计)与上面的幻灯片不同。如果可能的话,设置 Apollo Server、Apollo Client 以及 Playground 似乎需要一定量的配置。

apollo graphql apollo-server apollo-client

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

修复“类型实例化太深并且可能是无限的。” 在组合函数中

我创建了一个将函数链接在一起的函数。我创建了一堆通用类型来正确关联结果函数可以具有的参数。您可以在此处阅读有关此范例的更多信息、我正在寻找的内容以及我创建它的原因。

一切正常……到了一定程度。由于我生成类型的方式,当链变得太长时,TypeScript 会失败。我正在寻找一种方法来缓解这个问题。

我收到此错误:

Type instantiation is excessively deep and possibly infinite.

毫无疑问,这对于 TypeScript 来说太多了,而且随着每个函数的添加,类型映射呈指数级增长。

我意识到这段代码相当复杂,所以我不是在寻找完整的技术解决方案,只是寻找一种更符合 TypeScript 的/算法更简单的方法来做同样的事情。

namespace Poly {
    export type Omit<T, K extends string | number | symbol> = { [P in Exclude<keyof T, K>]: T[P]; }
}

namespace Use {
    type ThenArg<T> = T extends Promise<infer U> ? U : T
    type RelatedThen<A, B> = A extends Promise<infer U> ? Promise<B> : B
    export type Func = (...args: any[]) => any
    export type Return<A extends …
Run Code Online (Sandbox Code Playgroud)

composition infinite-loop control-flow function-composition typescript

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

如何让函数传递具有相同重载的参数?

我正在尝试创建一个函数,将它的参数传递给另一个函数。这两个函数都需要具有相同的重载。

function original (a: number): boolean;
function original (a: string, b: string): boolean;
function original (a: number | string, b?: string): boolean {
  return true;
}

function pass (a: number): boolean;
function pass (a: string, b: string): boolean;
function pass (a: number | string, b?: string): boolean {
  return original(a, b);
}
Run Code Online (Sandbox Code Playgroud)

这不起作用。

'string | 类型的参数 number' 不能分配给类型为 'string' 的参数。

类型 'number' 不可分配给类型 'string'。(2345) input.tsx(4, 10):针对此实现的调用会成功,但重载的实现签名在外部不可见。

操场

overloading typescript

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

循环使用通用名称的变量

乍一看,我认为你可以得到我想要做的事情.我想循环使用相同名称但带有数字前缀的变量.我也对我应该使用的循环有一些困惑,不确定"for"循环是否有效.唯一的问题是我无法理解php如何解释"即时"或伪造的变量.输出带有美元符号的字符串会遇到一些麻烦.提前致谢!

$hello1 = "hello1";
$hello2 = "hello2";
$hello3 = "hello3";
$hello4 = "hello4";
$hello5 = "hello5";
$hello6 = "hello6";
$hello7 = "hello7";
$hello8 = "hello8";
$hello9 = "hello9";
$hello10 = "hello10";

for ( $counter = 1; $counter <= 10; $counter += 1) {
    echo $hello . $counter . "<br>";
}
Run Code Online (Sandbox Code Playgroud)

php

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

jQuery选择图像的父级a

我正在尝试选择锚标记并添加目标属性.当它包含在具有类大小缩略图的图像中时.任何人都知道为什么这不起作用?

<a href="example"><img class="size-thumbnail" src="example"></a>
Run Code Online (Sandbox Code Playgroud)

jQuery的

$('.size-thumbnail:parent').attr('target','_blank');
Run Code Online (Sandbox Code Playgroud)

jquery

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

版本控制:从zip到git

我有三个名为[1,2,3]的压缩文件夹,每个文件夹包含相同的项目1最早,3个是最新的.我正在寻找一种方法将所有这些合并为3个git提交,最常见的3个是文件夹内容.

我想我可以做到以下几点:

  1. 解压缩1.
  2. 将内容从1放入新文件夹.
  3. git init
  4. git add -A
  5. git commit -m "first commit
  6. 解压缩2
  7. 用2中的内容替换新文件夹中的内容
  8. git add -A
  9. git commit -m "second commit
  10. 解压缩2
  11. 用3中的内容替换新文件夹中的内容
  12. git add -A
  13. git commit -m "third commit

谁能告诉我这是否是最好的方法呢?

git version-control

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

在受保护对象中获取字符串

我试图让这个对象里面的字符串"this info"让我们调用它$object,但数据受到保护,我该如何访问那个口袋?

    object(something)#29 (1) {
  ["_data":protected]=>
  array(10) {
    ["Id"]=>
    array(1) {
      [0]=>
      string(8) "this info"
    }
    ["SyncToken"]=>
    array(1) {
      [0]=>
      string(1) "0"
    }
    ["MetaData"]=>
    array(1) {
Run Code Online (Sandbox Code Playgroud)

显然$object->_data给了我一个错误Cannot access protected property

php object

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

嵌套请求正在阻止

我对nodejs比较陌生.我最近把我过去几个月收集的所有集体知识汇集到了一个项目中.我相信我遇到了nodejs中的第一个"阻塞"问题.

我有一个页面加载两个request()调用,他们是异步和相应的嵌套.最里面的一个使用来自最里面的数据来重定向用户.

  request(parameters,function(error, response, data){
      //the first request passes a token  
      request(newParamters,function(error, response, data){
          //the second request passes a url
          res.redirect(data.info.url);
      });
  });
Run Code Online (Sandbox Code Playgroud)

错误是当我在许多浏览器选项卡中打开它时,它会在第一对之后断开,然后服务器说data.info.url是未定义的.

我的问题是:我一次只能执行一个请求吗?我可以保存第一个令牌request()并将用户重定向到第二个request()这会有帮助吗?我一直非常注重异步和不阻塞,我很震惊这种情况正在发生.任何反馈都会很棒!

javascript asynchronous nonblocking node.js

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

我可以用什么来替换嵌套的异步回调?

可以说我想发送一封电子邮件然后更新数据库,这两个动作都是异步的.这就是我通常写它的方式.

send_email(function(err, id){
    if(err){
        console.log("error");
    }else{
        update_database(id,function(err, id){
            if(err){
                console.log("error");
            }else{
                console.log("success");
            }
        });
    }
});
Run Code Online (Sandbox Code Playgroud)

我想用中间件来做这件事.

var mid = {};

mid.send_email = function(){
    return function(next){
        send_email(function(err,id){
            if(err){
                console.log("error");
            }else{
                next(id);
            }
        });
    }
}

mid.update_database = function(){
    return function(id,next){
        update_database(id,function(err,id){
            if(err){
                console.log("error");
            }else{
                next(id);
            }
        });
    }
}

mid.success = function(){
    return function(id,next){
        console.log("success")
        next(id);
    }   
}
Run Code Online (Sandbox Code Playgroud)

堆叠中间件.

middleware.use(mid.send_email());
middleware.use(mid.update_database());
middleware.use(mid.success());
Run Code Online (Sandbox Code Playgroud)

手头有两个主要问题.

  • 如何使用中间件代替嵌套回调?
  • 是否可以将变量传递给next()

javascript asynchronous middleware callback node.js

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