小编Ell*_*son的帖子

存储和调用一般类型的委托

如果不诉诸反思,我正在寻找的东西可能是不可能的.如果是这样的话,我仍然想知道最好的解决方法.

从本质上讲,这就是我希望我的代码看起来像:

var instance = new MyClass();
instance.Add<int, string>(x => x.ToString());
instance.Add<string, Warehouse>(x => Warehouse.LookupByName(x));
instance.Add<Warehouse, IList<Supplier>>(x => x.Suppliers());

instance.Chain(3);    // should call each lambda expression in turn
Run Code Online (Sandbox Code Playgroud)

我的问题是,如何在MyClass的列表中存储这些具有不同签名的代理?以后我怎么能在我想要的时候调用它们,使用每个的返回值作为下一个的输入参数?

MyClass的内部很可能是List的混乱和所有这一切.但我甚至不确定从哪里开始.

(原来,我想打电话new MyClass<int, string, Warehouse, IList<Supplier>>().但是,由于没有"类型参数数组",我放弃了这种方法.)

c# generics delegates

9
推荐指数
1
解决办法
1959
查看次数

使用作用域包运行 npx

我正在尝试使用 npx 执行作用域包。似乎唯一的方法是直接指定包,例如:

npx -p @foo/bar bar
Run Code Online (Sandbox Code Playgroud)

这将正确下载@foo/bar并运行bar我的package.json“bin”部分中的条目:

"bin": {
    "bar": "./cli.js"
}
Run Code Online (Sandbox Code Playgroud)

但是,我真正想要的是输入:

$ npx @foo/bar
npx: installed 1 in 4s
npx: command not found: bar
Run Code Online (Sandbox Code Playgroud)

我试过@foo/bar, foo/bar,bar在该bin部分中,没有运气。npx 是否支持这样的作用域包?

node.js npm npx

6
推荐指数
1
解决办法
625
查看次数

NodeJ:util.promisify,其中回调函数具有多个参数

我在这里可能会遗漏一些确实很明显的东西,但是如何使用如下所示util.promisify的函数呢?

function awkwardFunction (options, data, callback) {
    // do stuff ...
    let item = "stuff message"
    return callback(null, response, item)
}
Run Code Online (Sandbox Code Playgroud)

我可以这样称呼它:

 awkwardFunction ({doIt: true},'some data', (err, result, item) => {
      console.log('result')
      console.log(result)
      console.log('item')
      console.log(item)
      done()
    })
Run Code Online (Sandbox Code Playgroud)

再回来

result
{ data: 'some data' }
item
stuff message
Run Code Online (Sandbox Code Playgroud)

使用承诺版本时:

let kptest = require('util').promisify(awkwardFunction)
kptest({doIt: true},'some data')
   .then((response, item) => {
    console.log('response')
    console.log(response)
    console.log('item')
    console.log(item)

 })
 .catch(err => {
     console.log(err)
  })
Run Code Online (Sandbox Code Playgroud)

并尝试同时访问“响应”和“项目”,似乎第二个参数被忽略了...

result
{ data: 'some data' }
item
undefined …
Run Code Online (Sandbox Code Playgroud)

node.js

5
推荐指数
3
解决办法
2316
查看次数

标签 统计

node.js ×2

c# ×1

delegates ×1

generics ×1

npm ×1

npx ×1