gpt4 book ai didi

javascript( promise )拼图

转载 作者:行者123 更新时间:2023-11-28 18:46:06 30 4
gpt4 key购买 nike

如果必须使用 Promises,您会如何编写以下代码?

这个想法是,“私有(private)”方法 p1 调用一个执行异步操作的函数,然后,当异步调用的结果准备就绪时,控制权将传递给“私有(private)”方法p2。就像 p1 一样,p2 调用一个执行一些异步操作的函数,然后将控制权传递回 p1。在此示例中,这种情况将永远持续下去。

正如你所想象的那样,我将代码简化为更理论化的场景,以使其简短。实际上,p1p2 正在做两件不同的事情,并且基于程序中 p1p2 中的某些条件执行确实停止。

mySimpleRunner = (function () {

var service = {};

var async = function (cb) {
var n = Math.floor(Math.random() * 1000);
setTimeout(function () {
cb(n);
}, n);
}

var p1 = function (r) {
async(p2);
console.log("1:", r || "first call");
};

var p2 = function (r) {
async(p1);
console.log("2:", r);
};

service.run = function () {
p1();
}

return service;

})();

mySimpleRunner.run();

我尝试了许多可能的方法来对 Promise 执行相同的操作,其中 async 不是将函数 cb 传递给 async,而是在计时器完成时解析的 Promise。但我还没弄清楚如何正确地做到这一点。

如果您有时间并且想尝试一下,我将非常感激。

最佳答案

确实没有太大区别。唯一的问题是您将回调传递给 then 而不是 if async:

function async() {
return new Promise(function (resolve) {
var n = Math.floor(Math.random() * 1000);
setTimeout(resolve.bind(null, n), n);
});
}

function p1(r) {
async().then(p2);
console.log(r);
}

function p2(r) {
async().then(p1);
console.log(r);
}

关于javascript( promise )拼图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35315365/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com