Javascript 如何在Firefox控制台中等待承诺解决

Javascript 如何在Firefox控制台中等待承诺解决,javascript,firefox,promise,Javascript,Firefox,Promise,我已经在Firefox中打开了开发人员控制台,并且必须履行一些承诺。我真的很欣赏一些阻塞语法,它只是等待承诺解析并直接返回结果。现在我必须做一些事情,比如: var result; promise.then((res) => { result = res}) function = resolvePromise(promise) { ... }; 每次都是我真的厌倦了的。我试过这样的方法: resolve = function(promise) { var res; var done =

我已经在Firefox中打开了开发人员控制台,并且必须履行一些承诺。我真的很欣赏一些阻塞语法,它只是等待承诺解析并直接返回结果。现在我必须做一些事情,比如:

var result; promise.then((res) => { result = res})
function = resolvePromise(promise) { ... };
每次都是我真的厌倦了的。我试过这样的方法:

resolve = function(promise) { var res; var done = false; promise.then(r => {res = r; done = true}); while(!done) {}; return res; }
但它永远不会停止。有什么-什么,如何轻松得到结果

编辑:首先,我不是在处理节点环境或一些JS脚本。我知道如何在那里对付他们。我正在处理Fixrefox开发工具控制台,我正在寻找一些简单的方法来等待承诺的解决。我知道我能活下去。这可以为一两个承诺做到,但不能为十几个承诺做到,因为这是一大堆代码。我想要像这样的东西:

var result; promise.then((res) => { result = res})
function = resolvePromise(promise) { ... };
它只是阻塞,直到承诺被解析并返回解析的值。因此,我可以简单地将其用作:

var result = resolvePromise(promise); // result now holds the actual value
它不必是功能性的,也可以是一些黑客行为,因为它不会在脚本或节点中使用,而只能在开发工具中使用。在控制台中为每一个承诺写下生命只是可怕的人体工程学

Edit2:@Andy建议使用承诺。但由于我没有同时获得所有承诺,因此这不是一个选项。基本上,我在一个REPL中,我需要一个简单的方法来评估/检查/存储/决定下一步要做什么,然后重复。我不能一直写生活

谢谢,这是解决这个问题的最好的现代方法

//用于返回数据的模拟提取函数
//2秒后
函数fetch(){
常数n=Math.floor(Math.random()*(100-1)+1);
返回新承诺(解决=>{
setTimeout(()=>resolve(n),1000);
});
}
//将大量承诺推送到数组中
常数arr=[];
for(设i=0;i<20;i++){
arr.push(fetch());
}
//异步立即调用函数表达式。
//“承诺,一切”汇集了一切的结果
//数组中的承诺并返回其自己的承诺
//“等待”会暂停,直到承诺兑现
(异步()=>{
log('请等待结果');
const result=等待承诺。全部(arr);
控制台日志(结果);

})();你可以使用异步IIFE,如果我在处理一个或两个承诺,我可以使用IIFE的可能副本。但是如果我真的不想花时间在游戏机上的话,是的,谢谢,这可以通过一两个承诺来实现,但不能通过十几个承诺来实现。是否有可能将其封装在函数中,这样就可以像
var result=iife(promise);//结果现在保存实际值
?@PremyslDonat No!异步函数返回一个AsyncFunction对象。您仍然必须使用
然后使用
等待
得到结果。@PremyslDonat,如果您有大量承诺,请将它们放入一个数组并使用
承诺。所有
等待它们完成,然后返回结果<代码>承诺。所有
返回一个承诺,因此您仍然可以使用
等待
。如果有什么用的话,我已经更新了我的答案。@Andy谢谢你的时间,但是我没有同时把它们都放在一起。你有时在REPL工作吗?您编写一行代码,等待求值,检查结果,将其存储在某个变量中,然后重复。。。与不断重写和重新运行某些脚本相比,响应时间更快、更灵活。