小编Bri*_*etz的帖子

删除/取消定义类方法

您可以为类动态定义类方法,如下所示:

class Foo
end

bar = %q{def bar() "bar!" end}
Foo.instance_eval(bar)
Run Code Online (Sandbox Code Playgroud)

但是你如何做相反的事情:删除/取消定义一个类方法?我怀疑Module remove_methodundef_method方法可能可以用于此目的,但我在谷歌搜索几个小时之后看到的所有示例都是用于删除/取消定义实例方法,而不是类方法.或者也许你可以传递一种语法instance_eval来做到这一点.

提前致谢.

ruby metaprogramming

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

如何使用 Promise.all 解构动态数量的异步调用的结果

我需要通过 并行进行未知数量的异步调用Promise.all。与此类似的东西:

let externalCalls = [call1()];
if (someCondition1) {
  externalCalls.push(call2());
}
if (someCondition2) {
  externalCalls.push(call3());
}
Run Code Online (Sandbox Code Playgroud)

然后externalCalls将被传递到,Promise.all以便它们可以并行运行。

理想情况下,我想使用结果的解构,以便我可以按名称引用结果,即

const [call1, call2, call3] = await Promise.all(externalCalls);
Run Code Online (Sandbox Code Playgroud)

我知道call1它会永远在那里,但我不知道是否call2call3将会在那里。所以我想定义动态const调用的结果await Promise.all以获得正确的属性,这可能吗?或者我是否有一个长度未知的通用结果数组,然后必须检查结果中的每个项目以查看哪个调用产生了它?

javascript es6-promise

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

标签 统计

es6-promise ×1

javascript ×1

metaprogramming ×1

ruby ×1