JavaScript如何输出result1和result2的值

JavaScript How to output the value of result1 and result2

下面的脚本只输出变量“result2”的值

如何在不使用console.log的情况下输出“result1”和“result2”的值,因为我将把这个脚本放在C#的cefSharp框架中,cefSharp不输出“console.log"

var result;
var result2;
const myPromise = new Promise(
function(resolve)
{
    var a1 = 2 + 2;
    resolve(a1);
}
);
myPromise
.then(res=>{return result = res;});
result; //output=4

myPromise
.then(res2=>{result = res2+1; return result2=result;});
result2; //output=5

var result;
var result2;
const myPromise = new Promise(
function(resolve)
{
    var a1 = 2 + 2;
    resolve(a1);
}
);
myPromise
.then(res=>{return result = res;});
result;

myPromise
.then(res2=>{result = res2+1; return result2=result;});
result2;

这是关于 cefSharp

中执行 JavaScript 和 Promise 的信息

在此浏览器主框架的上下文中评估 Javascript。该脚本将异步执行,方法 return 是一个封装来自 Javascript 的响应的任务。 javascript 中脚本执行的结果是 Promise.resolve 因此即使没有承诺值也会被视为承诺。您的 javascript 应该 return 一个值。 javascript 将被包装在立即调用的函数表达式中。当承诺触发 then/catch 时,此 returned 任务将完成。

var script = "return new Promise(function(resolve, reject) { setTimeout(resolve.bind(null, { a: 'CefSharp', b: 42, }), 1000); });"
JavascriptResponse javascriptResponse = await browser.EvaluateScriptAsPromiseAsync(script);

console.log 调用仅显示前一条语句的值,仅此而已。
在 promise 函数之外使用结果可能会出现问题 - promise 可能会在此之后完成。也许想调查 async/await?

Promise.all 包办一切

我不确定 C# 方面的事情,但正如 JavaScript 所说:
如果您想访问承诺的两个结果,您可能有兴趣实施 Promise.all

const myPromise = new Promise(
    function(resolve)
    {
        let result = 410;
        resolve(result + 10);
    }
);

const myPromise2 = new Promise(
    function(resolve)
    {
        let result2 = 67;
        resolve(result2 + 2);
    }
);

Promise.all([myPromise, myPromise2]).then((values) => {
  // These are all results from all promises
  // You can analyze/modify/copy their results with a forEach or however you like.
  console.log(values);
});

此示例实现现在可以使用所有承诺的所有结果。