Javascript 将带有回调和其他参数的函数传递给另一个函数

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

我希望使用承诺以同步顺序执行任务,为此,我有以下3个函数:

  • init():我对管弦乐队的承诺
  • saveUser():将用户对象保存到数据库中的函数
  • 负责以同步顺序运行它的主要功能
  • 它在不传递“user”变量的情况下工作正常。我想知道,如何将此“user”变量传递到我的
    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))