Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Javascript中从函数内部传递值_Javascript_Callback_Request - Fatal编程技术网

在Javascript中从函数内部传递值

在Javascript中从函数内部传递值,javascript,callback,request,Javascript,Callback,Request,我有一个javascript函数“data.getOrdersByUsersModifiedDate”,它正在调用另一个函数“database.getDb”。第一个函数获取一个“request”参数对象,该对象定义了参数。但是,我似乎无法理解如何将该参数从data.getOrdersByUsersModifiedDate传递到database.getDb,以便在第行使用它 var orders=db.order.find().toArray(函数(err,result) 如何将请求参数从顶部函数

我有一个javascript函数“data.getOrdersByUsersModifiedDate”,它正在调用另一个函数“database.getDb”。第一个函数获取一个“request”参数对象,该对象定义了参数。但是,我似乎无法理解如何将该参数从data.getOrdersByUsersModifiedDate传递到database.getDb,以便在第行使用它

var orders=db.order.find().toArray(函数(err,result)

如何将请求参数从顶部函数“getOrdersByUsersModifiedDate”传递到较低的函数“database.getDb”,以便在获取订单时将其用作筛选器

data.getOrdersByUsersModifiedDate=函数(请求,下一步){
getDb(函数(err,db){
如果(错误){
下一个(错误);
}否则{
var orders=db.order.find().toArray(函数(err,result){
if(err)返回next(err);
next(null,result);
});
}
});
};
使用
bind

并允许开发人员指定函数调用的上下文(
this

Bind
使用指定给Bind的参数(来自第二个参数)创建一个新函数,而
apply
使用新上下文和作为数组传递的参数调用该函数(请参见文档)

这将帮助您解决回调地狱中的作用域地狱

穷人实现这一目标的方法是使用
let that=this

编辑:正如OP在评论中指出的那样;因此,使用箭头函数可以解决OP问题

data.getOrdersByUsersModifiedDate=函数(请求,下一步){
getDb(函数(err,db){
如果(错误){
下一个(错误);
}否则{
让{arg1,arg2,arg3}=request;//这应该适用于ES6
var arg1=request.arg1;//否则会发生这种情况吗?
var orders=db.order.find().toArray(函数(err,result){
if(err)返回next(err);
next(null,result);
});
}
}.bind(this));//将其作用域设置为getOrdersByUsersModifiedDate的上下文

}
正是我想要的。我也遇到过箭头函数作为替代。是的,箭头函数使用外部上下文。我在答案中添加了这个。