gpt4 book ai didi

javascript - 1 个 promise 有多个消费者可以吗?

转载 作者:行者123 更新时间:2023-11-30 20:14:36 35 4
gpt4 key购买 nike

示例代码:

const googleLoadPromise = new Promise(function (resolve, reject) {
google.charts.setOnLoadCallback(function () {
resolve(1);
});
});

googleLoadPromise.then(function () {
// consumer 1 - do something
});

googleLoadPromise.then(function () {
// comsumer 2 - do something else
});

即对于 googleLoadPromise,有两个消费者。这样的模式可以吗?它似乎工作正常 - 即两个消费者都被调用,并且他们似乎不会给彼此造成问题。

此外,如果这没问题,运行消费者的顺序是否确定(只是出于兴趣,最重要的是)?

最佳答案

当然可以。如果你想按顺序运行这两个函数,你也可以这样做:

const googleLoadPromise = new Promise(function (resolve, reject) {
google.charts.setOnLoadCallback(function () {
resolve(1);
});
});

googleLoadPromise
.then(function () {
// consumer 1 - do something
}).then(function () {
// comsumer 2 - do something else
});

还请记住处理拒绝并兑现您的 promise 。


async await 也让 Promises 变得更容易。下面的示例更符合您所写的内容:

const googleLoadPromise = new Promise(function (resolve, reject) {
google.charts.setOnLoadCallback(function () {
resolve(1);
});
});


function1 = () => {
// consumer 1 - do something
}

function2 = () => {
// consumer 1 - do something
}

(async function() {
try {
const result = await googleLoadPromise();

function1();
function2();
}
catch( error ) {
console.error( error );
}
}());

关于javascript - 1 个 promise 有多个消费者可以吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52050141/

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