gpt4 book ai didi

javascript - 客户端如何同步调用服务端?

转载 作者:行者123 更新时间:2023-11-30 00:07:47 26 4
gpt4 key购买 nike

我正在根据一些事情从客户端向服务器发出多次调用,我需要它们等到调用完成之前的调用,并在下一个调用开始之前返回一个值。这是我目前正在做的事情的一个小例子:

客户:

function doOrder() {
var addDevices = Template.instance().addDevices.get();

if (addLicense) {
createCustomer();
}

if (addDevices) {
var maintProrate = Session.get('maintProrate');
var deviceCharge = (deviceFee * addDevices);
doCharge(deviceCharge, 'DEVICES', 'deviceCharge', 'chargeMaintFee');
}
}

function createCustomer() {
var stripeArgs = Helpers.client.stripeArgs('form');

Meteor.call('stripe', 'customers', 'create', stripeArgs, function(err, response){
if (err) {
console.log(err);
Bert.alert(err, 'danger');
} else {
Session.set('customerInfo', response);
Session.set('customerId', response.id);
}
});
}

function doCharge(amount, description, storeKey) {
var chargeArgs = {
amount: amount,
currency: 'usd',
customer: Session.get('customerId'),
description: description
};

Meteor.call('stripe', 'charges', 'create', chargeArgs, function(err, response){
if (err) {
console.log(err);
Bert.alert(err, 'danger');
} else {
Session.set(storeKey, response);
}
});
}

服务器:

Meteor.methods({
stripe(func1, func2, arg1) {
check( func1, String );
check( func2, String );
check( arg1, Match.OneOf(Object, String));

var func = Meteor.wrapAsync(Stripe[func1][func2], Stripe[func1]);
return func(arg1, {});
},
stripe2(func1, func2, arg1, arg2) {
check( func1, String );
check( func2, String );
check( arg1, Match.OneOf(Object, String));
check( arg2, Match.OneOf(Object, String));

var func = Meteor.wrapAsync(Stripe[func1][func2], Stripe[func1]);
return func(arg1, arg2, {});
}
});

因此,如果 addLicenseaddDevices 都在 doOrder 函数中设置,则 createCustomerdoCharge 将运行。我需要的是 createCustomer 函数在 doCharge 函数运行之前完成并返回一个值。

我知道我可以将 doCharge 函数放在 createCustomer 函数的回调中,但我还有更多函数需要按顺序运行,所以我会喜欢避免callback hell .

我使用 Meteor.wrapAsync 认为可以做到,但没有骰子。我仍然从 API 获得返回值,但它们都是同时发生的。

有什么想法吗?提前谢谢你。

最佳答案

正如@MichelFloyd 建议的那样,我最终将所有调用都移到了服务器端方法中,这样就只需要来自客户端的一个调用。

关于javascript - 客户端如何同步调用服务端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37839517/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com