Javascript 承诺函数在之后未运行函数。然后

Javascript 承诺函数在之后未运行函数。然后,javascript,node.js,sms,promise,aws-lambda,Javascript,Node.js,Sms,Promise,Aws Lambda,我要做的是运行发送消息的函数。节点js的问题在于它没有按顺序返回。但是,我确实希望每个函数都按照编码的顺序运行 我不太确定我错过了什么 现在我可以让它按顺序只返回消息1和消息2,但我想从callfirstmessage一直到callfifthmessage。当我试着这么做时,它们全都被打乱了 var promise=新承诺(函数(解析、拒绝){ //做一些异步的事情 callfirstmessage(); //解析(数据); 如果(成功){ 解析(数据); }否则{ 拒绝(理由); } });

我要做的是运行发送消息的函数。节点js的问题在于它没有按顺序返回。但是,我确实希望每个函数都按照编码的顺序运行

我不太确定我错过了什么

现在我可以让它按顺序只返回消息1和消息2,但我想从callfirstmessage一直到callfifthmessage。当我试着这么做时,它们全都被打乱了

var promise=新承诺(函数(解析、拒绝){
//做一些异步的事情
callfirstmessage();
//解析(数据);
如果(成功){
解析(数据);
}否则{
拒绝(理由);
}
});
promise.then(函数(数据){
//第一个承诺返回时调用的函数
返回新承诺(功能(解决、拒绝){
//第二个异步的东西
调用第三条消息();
//解析(数据);
如果(成功){
解析(数据);
}否则{
拒绝(理由);
}
});
},功能(原因){
//错误处理程序
}).then(功能(数据){
callsecondmessage();
},功能(原因){
//第二个错误处理程序

});第一个承诺的执行人(重新格式化):

不异步解析或拒绝返回的承诺。在解析/拒绝返回的承诺之前,您需要从异步操作获得回调。在伪代码中,类似于:

var promise = new Promise(function(resolve, reject)
{ // do some async stuff
  callfirstmessage( successCallBack, failCallBack);
  function successCallBack( data)
  {  resolve(data);
  }
  function failCallBack( reason)
  {  reject(reason);
  }
});

实际上,您可能必须使用异步操作支持的回调,然后根据请求或响应对象中的状态属性分析操作的成功或失败。

success
在任何地方都没有定义。这将导致引用错误。您有
承诺
复数…callfirstmessage和callsecondmessage是同步的还是异步的?当您发布包含拼写错误的代码以及对不存在的变量的引用,然后在被问到这些问题时没有响应时,我们只能关闭您的问题。对不起,我做了一些更新。此外,承诺=要求(“承诺”);这很有帮助。我能够让它按顺序运行callfirstmessage()和callsecondmessage(),但之后的其他消息都不会按顺序运行。我已经编辑了上面的代码来展示我现在所拥有的。没有细节很难详细阐述。建议尝试编写一个函数,该函数获取要发送的消息的详细信息(无论是一组已编号消息的数量还是更多详细信息,如Post或Get的URL、请求数据和请求类型),并返回一个承诺,成功返回数据或发生错误时拒绝。不要使用全局变量,也不要将如何实现全局变量的详细信息导出到更高级别的Promise composition。让它工作起来,您可以查看消息组成;-)
var promise = new Promise(function(resolve, reject)
{ // do some async stuff
  callfirstmessage( successCallBack, failCallBack);
  function successCallBack( data)
  {  resolve(data);
  }
  function failCallBack( reason)
  {  reject(reason);
  }
});