我试图整理一些调用rest API来获取ID的函数,然后使用此ID发布到不同的API并且我遇到了主要障碍。我尝试过回调和承诺,但无济于事,我用来请求ID的第一个函数在第二个函数执行之前没有执行,所以$ post失败了。我已经使用了setTimout,它似乎可以解决问题,但由于某种原因,我无法在计时器功能中调用不同的函数。有人可以让我知道我在哪里出错了,感谢您的帮助!
var timerVariable;
this.placeNewOrder = function(){
this.newOrder();
timerVariable = setTimeout(this.orderTimer, 1000);
};
this.newOrder = function(){
//code to set currentOrderId
return currentOrderId
alert("got Id");
};
orderTimer = function(){
this.postOrderItems();//this call never seams to call the function
};
this.postOrderItems = function(){
alert("postOrderItems called");//, orderId: " + currentOrderId);
//code to $post in here
};
答案 0 :(得分:1)
将上下文保留在orderTimer
内的方法是绑定它:
timerVariable = setTimeout(this.orderTimer.bind(this), 1000);
这解决了您遇到的直接问题,但这是解决原始问题的错误方法。