Javascript 如何声明promise变量,以便在promise得到解析之前可以在任何地方使用它

Javascript 如何声明promise变量,以便在promise得到解析之前可以在任何地方使用它,javascript,jquery,promise,Javascript,Jquery,Promise,我在使用承诺解决的代码之前遇到了一个问题 我有多个页面,页面首先加载,这对我来说很难说,来自多个promise的解析数据被所有开发人员使用 以下是我如何从多个promise中获得解析数据 asyncCompletedPromise = Promise.all([getUserCollection(), getDefaultSettings(), getGroupUsersDetails()]).then((values) => { console.log('all promises a

我在使用承诺解决的代码之前遇到了一个问题

我有多个页面,页面首先加载,这对我来说很难说,来自多个promise的解析数据被所有开发人员使用

以下是我如何从多个promise中获得解析数据

asyncCompletedPromise = Promise.all([getUserCollection(), getDefaultSettings(), getGroupUsersDetails()]).then((values) => {
  console.log('all promises are done');
  console.log(values);
  return values;
});
问题:如何使这个asyncCompletedPromise变量成为基于promise的变量,以便在promise重新启动之前使用它

以下是工作演示:

var asyncCompletedPromise=Promise,apicCompletedTracker={}; 函数getUserCollection{ 返回新的允诺函数解析、拒绝{ $.ajax{ 网址:'https://jsonplaceholder.typicode.com/users', 键入:“GET”, 数据类型:'json', 成功:functiondata{ 日志“getUserCollection api已完成”; apiCompletedTracker['getUserCollection']='completed'; 解析{用户:数据}; } }; }; } 函数getDefaultSettings{ 返回新的允诺函数解析、拒绝{ $.ajax{ 网址:'https://jsonplaceholder.typicode.com/users', 键入:“GET”, 数据类型:'json', 成功:functiondata{ setTimeoutfunction{ 日志“getDefaultSettings api已完成”; apiCompletedTracker['getDefaultSettings']='completed'; 解析{default:data}; },1500; } } }; } 函数getGroupUsersDetails{ 返回新的允诺函数解析、拒绝{ $.ajax{ 网址:'https://jsonplaceholder.typicode.com/posts', 键入:“GET”, 数据类型:'json', 成功:functiondata{ setTimeoutfunction{ 日志“GetGroupUsersDetailsAPI已完成”; apiCompletedTracker['getGroupUsersDetails']='completed'; 解析{组:数据}; },2500; } } }; } //当上述所有功能完成后,我可以申请 asyncCompletedPromise=Promise.all[getUserCollection,getDefaultSettings,getGroupUsersDetails]。thenvalues=>{ console.log“所有承诺都完成了”; //console.logvalues; 返回值; }; asyncCompletedPromise.thenfunctionvalues{ log'variable used first time'; }; asyncCompletedPromise.thenfunctionvalues{ log'variable used second time'; };
这与承诺无关。在为变量指定值point之前,不能使用该变量


注意,即使在你的第一次,在ajax响应异步实现变量所持有的承诺之前,您正在使用的工作代码段。

您在这里试图解决的更高级别的问题是什么,这会使您需要在定义承诺之前访问承诺?您确实要承诺。完成承诺后,再这样做。如果你想在承诺完成之前做点什么,不要使用then@charlietfl,我正在与多个开发人员合作,他们可能会在承诺真正得到解决之前使用它们,我想在解决之前解决它,到底要做什么?这听起来真像是一场灾难。您还混淆了示例Any函数中定义和解析的概念,该函数将放在Promise之后。all将在Promise解析之前运行。当然,如果它不是另一个Promise,我想将asyncCompletedPromise声明为Promise类型的全局变量,这就是我的问题所在,即使是声明的promise类型变量也是一种观察者,我可以在任何地方使用它。是的,与所有全局变量一样,您需要将初始化代码放在使用代码之前。为什么移动asyncCompletedPromise=Promise.all[getUserCollection,getDefaultSettings,getGroupUsersDetails]会有问题现在我的问题是,我如何从任何地方监视全局asyncCompletedPromise变量,而不考虑在任何地方调用它,或者您建议使用setInterval监视这些数据等等,您的建议是什么?再说一遍,你为什么不能把承诺的初始化放在最上面呢?实际上是否涉及多个脚本?不,您不能/不应该查看变量。