我对javascript编码很陌生,所以我试图绕过回调函数。我想我已经接近但仍然遇到障碍。
我使用jquery发布到REST api,我需要调用一个函数,然后按顺序调用另一个函数。从查找答案我发现我需要使用回调函数。
我在我的功能中使用了下面的脚本,但它在第一次回调时一直停止,所以我知道我错过了一些东西但是在测试加载后我无法弄清楚是什么。任何人都可以帮我解释一下我出错的地方吗?
根据反馈编辑的代码
this.placeNewOrder = function(){
if(items.length ==0){
alert("it was 0");
this.addToOrder();
newOrder(username, password, Id,function(){postOrder(username, password, Id, currentId);});
}
}
this.newOrder = function(username, password, Id, callback){
//some code
var username = username;
var password = password;
var Id = resultOfSomeCalculation;
callback(username,password,result,this.currentId);
alert("callback2 called");
};
this.postOrder = function(username, password, Id, currentId){
//some code
alert("finished");
};
答案 0 :(得分:0)
为此用例引入了JavaScript承诺。
一个 Promise 是承诺的时候不一定知道的值的代理 创建。它允许您将处理程序与异步相关联 行动的最终成功价值或失败原因。这让我们 异步方法返回类似于同步方法的值:相反 立即返回最终值,异步方法 返回承诺,在未来的某个时刻提供价值。
承诺处于以下其中一种状态:
- 待定:初始状态,未履行或拒绝。
- 履行:意味着操作成功完成。
- 拒绝:意味着操作失败。