环回是什么意思?

我正在尝试学习回送,但是我不太了解函数调用中“cb”的含义。 我读了这个在loopback文件中,variables'cb'代表什么? 我对nodejs中的callback有基本的了解,但是我只是不了解loopback中的cb。 例如, http://docs.strongloop.com/display/public/LB/Remote+methods 。

module.exports = function(Person){ Person.greet = function(msg, cb) { cb(null, 'Greetings... ' + msg); } Person.remoteMethod( 'greet', { accepts: {arg: 'msg', type: 'string'}, returns: {arg: 'greeting', type: 'string'} } ); }; 

那个cb是什么意思? 我们怎样才能知道它接受两个参数,null和一个string? 希望有人可以帮忙。

所以你有一个asynchronous函数Person.greet ,你会这样调用:

 Person.greet('hello', function(err){ ... }); 

请注意, 'hello'之后第二个参数被传递,它实际上是一个函数。 它也可以用一个名字来定义,并通过这样的方式:

 function callback(err){ ... } Person.greet('hello', callback); 

现在看起来如何定义Person.greet

 Person.greet = function(msg, cb) { cb(null, 'Greetings... ' + msg); } 

这里的区别就在于它在定义中使用了不同的名称: cb 。 它可以使用任何名字,因为它只是一个参数。 但通常使用“cb”,“done”或“next”作为标准做法。

看答案,在我看来,这两个问题中只有一个是回答的。


问题1:那是什么意思?

之前已经回答了这是callback函数的简称。


问题2:我们如何知道它接受两个参数null和一个string?

您可以根据文档在远程方法的返回选项中定义这个选项。

描述远程方法的callback参数; 请参阅参数说明。 错误的论点是假定的; 不要指定。

所以,如果我们看看你的例子

 Person.remoteMethod( 'greet', { accepts: {arg: 'msg', type: 'string'}, returns: {arg: 'greeting', type: 'string'} } ); 

你在这里定义了callback参数

callback(err, greeting: string)

让我们从文档中获得另一个例子:

  MyModel.remoteMethod('download', { isStatic: true, returns: [ { arg: 'body', type: 'file', root: true }, { arg: 'Content-Type', type: 'string', http: { target: 'header' } }, ], }); 

对于这个例子,callback将是

callback(err, body: file, Content-Type: string)

用法就是这样

cb(null, stream, 'application/octet-stream');

我刚刚遇到同样的问题,经过几个小时的沮丧,我find了正式的答案。

https://docs.strongloop.com/display/public/LB/Remote+methods#Remotemethods-Howtodefinearemotemethod

选项接受:

定义远程方法接受的参数。 这些参数映射到您定义的静态方法。 对于上面的例子,你可以看到函数签名:Person.greet(name,age,callback)… name是第一个参数, age是第二个参数, callback是由LoopBack自动提供的(不要在你的accepts数组) 。 有关更多信息,请参阅参数说明。 如果未提供,则为空数组[]。