Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.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 什么';在这种情况下,蓝鸟或Q承诺的正确用法是什么?_Javascript_Node.js_Q_Bluebird - Fatal编程技术网

Javascript 什么';在这种情况下,蓝鸟或Q承诺的正确用法是什么?

Javascript 什么';在这种情况下,蓝鸟或Q承诺的正确用法是什么?,javascript,node.js,q,bluebird,Javascript,Node.js,Q,Bluebird,我正在使用一个节点机器包(machinepack wepay)与wepay通信,我希望能够正确地链接它 以下面的示例为例,我们将注册一个用户,创建一个帐户并发送电子邮件确认。在此过程中,我们将在mongo中存储一些结果信息 var WePay = require('machinepack-wepay'); // ... extraneous code removed for brevity var member = req.session.member; if( !_.has( membe

我正在使用一个节点机器包(machinepack wepay)与wepay通信,我希望能够正确地链接它

以下面的示例为例,我们将注册一个用户,创建一个帐户并发送电子邮件确认。在此过程中,我们将在mongo中存储一些结果信息

var WePay = require('machinepack-wepay');

// ... extraneous code removed for brevity

var member = req.session.member;

if( !_.has( member, 'wepay' ) ) {

    WePay.userRegister({
        clientId: config.wepay_client_id,
        clientSecret: config.wepay_client_secret,
        email: member.email,
        scope: 'manage_accounts,collect_payments,view_user,send_money',
        firstName: member.firstName,
        lastName: member.lastName,
        originalIp: req.headers['x-forwarded-for'],
        originalDevice: req.headers['user-agent'],
        tosAcceptanceTime: Math.floor(new Date() / 1000),
        callbackUri: config.site_url + '/wepay/user?member=' + member.id,
        useProduction: isProd
    }).exec({
        error: function (err) {
            yourErrorHandler(err);
        },
        success: function (result) {
            Member.update({id: member.id}, {wepay: result}, function (err, updated) {
                if (err) {
                    yourErrorHandler(err);
                }
                else {
                    member = updated[0];
                    WePay.accountCreate({
                        accessToken: member.wepay.access_token,
                        name: 'Account Name',
                        description: 'My new account'
                    }).exec({
                        error: function (err) {
                            yourErrorHandler(err);
                        },
                        success: function (result) {
                            Member.update({id: member.id}, {wepay_account: result}, function (err, updated) {
                                if (err) {
                                    sails.log.error("error updating page:", err);
                                }
                                req.session.member = updated[0];

                                // PATTERN CONTINUES HERE

                            });
                        }
                    });
                }
            });
        }
    });

}
else{
    WePay.userDetails({
        accessToken: member.wepay.access_token,
        useProduction: false,
    }).exec({
        error: function (err){
            yourErrorHandler(err);
        },
        success: function (result){
            _.extend( member.wepay, result );
            Member.update({id: req.session.current_page.id}, member, function (err, updated) {
                if (err) {
                    sails.log.error("error updating page:", err);
                }
                req.session.member = updated[0];

                // PATTERN CONTINUES HERE

            });
        },
    });
}

那些
exec
update
方法。对不起,这不是一个答案,也不是对问题真正有帮助的答案。这段代码有一个if/else语句和嵌套回调,它们可以用我不确定的承诺方式编写,因为我对它们还不太熟悉。不过,实现这些是第一步。你能做到吗?如果是这样,试着去做
if/else
insidepromise回调没有什么特别的(请参阅),只是不要忘记
返回您需要的内容。一旦你开始了,就开始吧。你看,我基本上已经写了一个完整的promise教程,我不想重复这里的所有内容:-)如果你需要具体的帮助,尽管问。那些
exec
update
方法。对不起,这不是一个答案,也不是对问题真正有帮助的答案。这段代码有一个if/else语句和嵌套回调,它们可以用我不确定的承诺方式编写,因为我对它们还不太熟悉。不过,实现这些是第一步。你能做到吗?如果是这样,试着去做
if/else
insidepromise回调没有什么特别的(请参阅),只是不要忘记
返回您需要的内容。一旦你开始了,就开始吧。你看,我基本上已经写了一个完整的promise教程,我不想重复这里的所有内容:-)如果你需要具体的帮助,尽管问。