Javascript 一个承诺的多个消费者可以吗?
示例代码:Javascript 一个承诺的多个消费者可以吗?,javascript,promise,Javascript,Promise,示例代码: const googleLoadPromise = new Promise(function (resolve, reject) { google.charts.setOnLoadCallback(function () { resolve(1); }); }); googleLoadPromise.then(function () { // consumer 1 - do something }); googleLoadProm
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
});
i、 e.对于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
});
还要记得处理拒绝和兑现你的承诺
使用
async
wait
时,承诺也变得容易多了。下面的示例更符合您编写的内容:
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 );
}
}());
这种式样行吗
当然,这是承诺的主要用途
运行消费者的顺序是确定的吗(只是出于兴趣,比任何事情都重要)
是的,首先附加的回调,然后执行,但是我不依赖它。如果您想一个接一个地运行回调,请相应地链接它们
// ok:
promise
.then(first);
promise
.then(second);
// better if second depends on first:
promise
.then(first)
.then(second);
它将按顺序运行这两个函数,这是正确的。目前还不清楚OP是否希望同时运行它们。我将添加一个承诺。所有回答。