Javascript 将带有回调和其他参数的函数传递给另一个函数
我希望使用承诺以同步顺序执行任务,为此,我有以下3个函数:Javascript 将带有回调和其他参数的函数传递给另一个函数,javascript,ecmascript-6,promise,es6-promise,Javascript,Ecmascript 6,Promise,Es6 Promise,我希望使用承诺以同步顺序执行任务,为此,我有以下3个函数: init():我对管弦乐队的承诺 saveUser():将用户对象保存到数据库中的函数 负责以同步顺序运行它的主要功能 它在不传递“user”变量的情况下工作正常。我想知道,如何将此“user”变量传递到我的saveUser.bind()中,以运行到我的承诺中,并通过userSave()函数保存 //承诺函数 函数初始化(fn){ 返回新承诺((解决、拒绝)=>{ fn((错误,结果)=>{ 如果(错误)拒绝(错误); log('sa
saveUser.bind()
中,以运行到我的承诺中,并通过userSave()
函数保存
//承诺函数
函数初始化(fn){
返回新承诺((解决、拒绝)=>{
fn((错误,结果)=>{
如果(错误)拒绝(错误);
log('saveUser函数在我的承诺内运行…');
决心(结果);
});
});
}
//saveUser函数,需要接收用户变量并显示在控制台日志中
函数saveUser(回调,用户){
console.log('1.用户将被保存…',user);
设置超时(()=>{
console.log('2.用户已保存!');
返回回调(null,true);
}, 1000);
}
//我需要将用户变量传递到saveUser()函数中的主函数
让用户={name:'Rick'};
init(saveUser.bind(x=>x))。
然后(()=>console.log('3.Promise已成功完成!'))。
catch((err)=>console.log('3.承诺被拒绝!',err))代码>
或
将saveUser(回调,用户)
更改为saveUser(用户,回调)
,然后
init(saveUser.bind(this, user))
bind的第一个参数是this
绑定代码如下所示saveUser.bind(x=>x,x=>x,user)
//承诺函数
函数初始化(fn){
返回新承诺((解决、拒绝)=>{
fn(决定、拒绝);
});
}
//saveUser函数,需要接收用户变量并显示在控制台日志中
函数saveUser(回调、用户、解析、拒绝){
console.log('1.用户将被保存…',user);
设置超时(()=>{
console.log('2.用户已保存!');
解析(回调(null,true));
}, 1000);
}
//我需要将用户变量传递到saveUser()函数中的主函数
让用户={name:'Rick'};
init(saveUser.bind(this,x=>x,user))。
然后(()=>console.log('3.Promise已成功完成!'))。
catch((err)=>console.log('3.承诺被拒绝!',err))代码>我不确定到底该如何组织,但下面是你的代码片段
//承诺函数
函数init(fn,thisArg,…params){
返回新承诺((解决、拒绝)=>{
fn.应用(thisArg,[(err,res)=>{
log('saveUser函数在我的承诺内运行…');
},…参数),然后((数据)=>{
解析(数据);
}).catch((错误)=>{
拒绝(错误);
});
});
}
函数saveUser(回调,用户){
返回新承诺((解决、拒绝)=>{
console.log('1.saving…');
设置超时(()=>{
console.log('2.用户已保存!用户名为',user.name));
解析(回调(null,user));
//拒绝(“理由”);
}, 200);
});
}
//我需要将用户变量传递到saveUser()函数中的主函数
让用户={name:'Rick'};
init(saveUser,null,user)。
然后(()=>console.log('3.Promise已成功完成!'))。
catch((err)=>console.log('3.承诺被拒绝!',err))代码>你想要实现什么?你的目标是什么?因为我有一种直觉,你在过度复杂你的代码…首先传递回调是很奇怪的,节点约定是把它作为最后一个参数。查看许多类似于init的函数nops,当我在bind中使用“this”时,承诺不会返回已解析的()值,也不会执行以下命令。然后()。console.log“3”。承诺以成功告终没有更新,问题是promise实现Thank FeMachine,但我需要该promise返回resolve()函数以执行以下操作。然后()。这可以工作,但resolve()不会返回。console.log“3”。承诺以成功告终不出现
init(saveUser.bind(this, user))