Javascript 如何声明promise变量,以便在promise得到解析之前可以在任何地方使用它
我在使用承诺解决的代码之前遇到了一个问题 我有多个页面,页面首先加载,这对我来说很难说,来自多个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
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监视这些数据等等,您的建议是什么?再说一遍,你为什么不能把承诺的初始化放在最上面呢?实际上是否涉及多个脚本?不,您不能/不应该查看变量。