JavaScript参数在arrow函数中使用,但未在local scope-Twilio函数中的任何位置声明

JavaScript参数在arrow函数中使用,但未在local scope-Twilio函数中的任何位置声明,javascript,callback,twilio,Javascript,Callback,Twilio,我正在研究一个预先存在的Twilio函数,并试图理解下面的代码是如何工作的。我已经测试过几次了,只要我在任何消息中发送“发件人”电话号码,我就会得到“正文”中描述的响应。然而,我试图理解'msg'和'err'参数是如何存在的,因为它们没有在函数的其他地方声明。有人能帮我理解这些参数是如何有效的吗?我是JavaScript新手,只了解回调和承诺的基础知识 编辑:我开始更了解这个想法了。因此,“then”和“catch”语句是在create()函数完成后发生的回调。谢谢你的回答,帮助我理解 ex

我正在研究一个预先存在的Twilio函数,并试图理解下面的代码是如何工作的。我已经测试过几次了,只要我在任何消息中发送“发件人”电话号码,我就会得到“正文”中描述的响应。然而,我试图理解'msg'和'err'参数是如何存在的,因为它们没有在函数的其他地方声明。有人能帮我理解这些参数是如何有效的吗?我是JavaScript新手,只了解回调和承诺的基础知识

编辑:我开始更了解这个想法了。因此,“then”和“catch”语句是在create()函数完成后发生的回调。谢谢你的回答,帮助我理解

  exports.handler = function(context, event, callback) {
  context.getTwilioClient().messages.create({
    to: '+14806484732 ',
    from: '+12133151685',
    body: 'Remember the special today is Shrimp Scampi'
  }).then(msg => {
    callback(null, msg.sid);
  }).catch(err => callback(err));
}
err=>callback(err)
-这是函数的声明。单参数
err
,执行函数
callback

与之类似的情况

.then(msg => { // `msg` is a single parameter of declared function
  callback(null, msg.sid);
}
范例

const callback=argument=>console.log(参数)
//这条线类似于
//常量回调=(参数)=>{console.log(参数)}
//也类似于
//函数回调(参数){console.log(参数)}
常量func=err=>回调(err)
//这条线类似于
//const func=(err)=>{callback(err)}
//也类似于
//函数func(err){callback(err)}
func('test')
err=>回调(err)
-这是函数的声明。单参数
err
,执行函数
callback

与之类似的情况

.then(msg => { // `msg` is a single parameter of declared function
  callback(null, msg.sid);
}
范例

const callback=argument=>console.log(参数)
//这条线类似于
//常量回调=(参数)=>{console.log(参数)}
//也类似于
//函数回调(参数){console.log(参数)}
常量func=err=>回调(err)
//这条线类似于
//const func=(err)=>{callback(err)}
//也类似于
//函数func(err){callback(err)}

func('test')
then
catch
中给出的函数都是回调函数,都采用单个参数。根据函数文档,这些参数中的每一个都有特定的含义,您可以查看这些文档。但是,如果您自己编写回调,您可以随意调用它们。选择名称只是为了尽可能清楚地表达语义

因此,它们本质上只是匿名函数的参数


我强烈建议研究Javascript中的回调,因为它们到处都在使用。

中给出的函数在
然后
捕获
中都是采用单个参数的回调。根据函数文档,这些参数中的每一个都有特定的含义,您可以查看这些文档。但是,如果您自己编写回调,您可以随意调用它们。选择名称只是为了尽可能清楚地表达语义

因此,它们本质上只是匿名函数的参数


我强烈建议查看Javascript中的回调,因为它们到处都在使用。

create()
解决了这个问题时会传递它们。这类似于通过
array.forEach()
将参数传递给函数的方式。好的,所以参数来自create()调用。他们到底是如何通过考试的?我对承诺很陌生。它们是在
create()
解析承诺时传递的。这类似于通过
array.forEach()
将参数传递给函数的方式。好的,参数来自create()调用。他们到底是如何通过考试的?我对承诺很陌生,我明白了。所以它类似于Java的lambda,对吗?但是味精的实际价值来自哪里呢。换句话说,msg是如何传递到函数中的?
context.gettwillioclient().messages.create(…)
reutrns asonchrouns
Promise
,如果将解析Promise,则将执行
函数
msg=>回调(null,msg.sid)
。Othervise承诺将失败并出现错误,错误将被
捕获。catch(err=>callback(err))
我明白了。所以它类似于Java的lambda,对吗?但是味精的实际价值来自哪里呢。换句话说,msg是如何传递到函数中的?
context.gettwillioclient().messages.create(…)
reutrns asonchrouns
Promise
,如果将解析Promise,则将执行
函数
msg=>回调(null,msg.sid)
。Othervise承诺将失败并出现错误,错误将被
捕获。捕获(err=>callback(err))