gpt4 book ai didi

javascript - Promise 中的同步代码会阻塞吗?

转载 作者:行者123 更新时间:2023-11-28 17:06:29 25 4
gpt4 key购买 nike

function getPropsPromise(prop) {
return new Promise(resolve => {
resolve(prop());
});
}

如果我在上面的“promisifying”函数中包装一个同步方法:

function docProps() {
const data = {};
data['doc.title'] = document.title;
return data;
}

像这样:

getPropsPromise(docProps)

这是否构成 Promise 的错误应用?本质上,将 Promise 用于任何与网络无关的事情是否可以接受?如果是,那么直接从“docProps”函数返回一个 Promise 会更好,如下所示,还是“promisifying”其调用可以达到相同的目标?:

function docProps() {
const data = {};
data['doc.title'] = document.title;
return new Promise(resolve => { resolve(data) };
}

最佳答案

Does this constitute as a wrong application of Promises? Essentially, is it acceptable to use Promises for anything non-network related?

不,可以将 Promise 用于非网络任务。它还用于读取文件、超时、异步处理、异步流等。

If it is then would it be better to return a Promise directly from the 'docProps' function as follows or does 'promisifying' its call serve the same objective?:

它们是等价的,但如果 docProps 返回一个 Promise,并且您还将它包装在 getPropsPromise promisif-ier 中,那将是多余的。此外,您的 getPropsPromise 可以替换为标准的 Promise.prototype.resolve 方法。即,

function getPropsPromise(prop) {
return new Promise(resolve => {
resolve(prop());
});
}

getPropsPromise(func);

相当于

Promise.resolve(func());

最后,除非您的 docProps 是您为此问题创建的虚拟/占位符,否则它没有任何异步内容。您提供的代码片段中似乎根本不需要 promise 。

关于javascript - Promise 中的同步代码会阻塞吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55729951/

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