promise 相关问题

Promise是延迟计算的一种策略,适用于多种并发风格:本地计算的线程和事件循环并发,以及同步和异步远程消息传递。 promise表示异步操作的最终结果。使用promises的主要方法是通过一种方法,将promise的最终值或失败原因的转换注册到新的promise。

“for wait...of”相当于什么?

我知道有很多资源解释await...of,但我认为我不会完全掌握这个概念,直到我看到一个以完全相同的方式工作但具有更基本语法的示例。 ...

回答 1 投票 0

如何使用 Promise 等待 Javascript 库加载?

我正在构建一个解决方案,其中多个Javascript库根据用户的交互在不同的时间点动态加载。加载库后,

回答 1 投票 0

Angular - 当承诺得到解决时更新 HTML

我对 Angular 和 Promises 有疑问,我不明白。 这是我的html: 准备好了吗? {{准备好了}} 显示这个 我对 Angular 和 Promises 有疑问,我不明白。 这是我的html: <div>Is Ready? {{isReady}}</div> <div *ngIf="isReady">Show this</div> <div *ngIf="!isReady">Show that</div> 这是我的 TS 文件: isReady: boolean = false; constructor( private myService: MyService){ await this.giveMeSlowData(); } async giveMeSlowData() : Promise<void>{ console.log(await this.myService.getResult()); this.isReady = await this.myService.getResult(); } 通常,一旦 TS 文件中的变量发生变化,HTML 中的 {{}} 中的所有内容都会发生变化。 但现在不行。 5-6 秒后我可以看到控制台日志,但 HTML 没有改变。为什么? 谢谢大家! 有几个原因导致此操作从未完成但您仍收到控制台日志。 实际问题 你有一个 async 方法,它永远不会返回任何内容。这使得 Promise 永远悬着。由于在构造函数中对挂起的 await 调用了 Promise,因此组件将永远不会完成初始化。您可以通过在 ngOnInit 中添加日志语句来测试这一点。 推荐 我强烈鼓励您改用 Observable,因为这是 Angular 世界的标准做法。许多组件销毁的事情都会以这种方式自动为您处理。您甚至可以在不需要更改 MyService 的任何逻辑的情况下执行此操作,如果必须保留为基于 Promise 的类,这会很方便。 所有初始化逻辑都应在 ngOnInit 方法中处理,而不是在构造函数中。 我鼓励您在所有这些方面改用模板中的 async 管道。 解决方案 这就是这一切如何结合在一起的。 slow-data.component.ts: isReady: Subject<boolean> = new BehaviorSubject(false); constructor( private myService: MyService, ) { } ngOnInit(): void { giveMeSlowData(); } giveMeSlowData(): void { from(this.myService.getResult()).subscribe(isReady); } slow-data.component.html <div>Is Ready? {{isReady | async}}</div> <div *ngIf="isReady | async">Show this</div> <div *ngIf="!(isReady | async)">Show that</div> 为什么要调用 this.myService.getResult() 两次? 试试这个: async giveMeSlowData() : Promise<void>{ this.isReady = await this.myService.getResult(); console.log(this.isReady); }

回答 2 投票 0

期货与承诺

我对 std::future 和 std::promise 之间的区别感到困惑。 显然,他们有不同的方法和内容,但实际用例是什么? 是吗?: 当我管理一些异步时

回答 1 投票 0

等待 Javascript 加载 Promise

我正在构建一个解决方案,其中多个Javascript库根据用户的交互在不同的时间点动态加载。加载库后,

回答 1 投票 0

刷新页面时lastValueFrom不可靠

我有一个 Angular/Django 应用程序,当我重复刷新页面时,在大约 10% 的情况下,lastValueFrom 的结果为空。不过,其余时间,我都能看到正确的数据。 这是我的

回答 1 投票 0

Await fetch 返回承诺,而不是数据

我正在从电子表格中获取和处理数据,如下所示: const getJsonSheet = async () => { const 响应 = 等待 fetch(''); 常量数据...

回答 3 投票 0

如何将参数传递给Promise?

这可能看起来是一个愚蠢的问题,但我是这个主题的新手。我正在 Nodejs 上使用 Promise,并且想将参数传递给 Promise 函数。但是我不知道如何...

回答 8 投票 0

带有 setTimeout 的 Promise 链

我是 javascript 的新手,现在正在学习 Promise 部分。 下面我一直在尝试用 setTimeout 编写一个承诺链,并期望它在 2 秒后打印“第一个结果”,并打印“...

回答 2 投票 0

向承诺结果添加额外数据

我正在使用一个节点库,它允许发出简单的http请求并返回一个承诺 - 这工作得很好,因为它允许并行发出几个请求,然后我稍后会收集它们......

回答 3 投票 0

迭代 Promise 真的能运行它们吗?

在与同事一起使用 googleapis 库时,我偶然发现了这个错误: 未捕获的 GaxiosError 错误:请求 失败,原因:连接 EMFILE 与同事一起使用 googleapis 库时,我偶然发现了这个错误: Uncaught GaxiosError Error: request to <gmail api url> failed, reason: connect EMFILE <xxx.xxx.xx.xxx:xxx> - Local (undefined:undefined) at _request (/gmail-api/node_modules/gaxios/build/src/gaxios.js:149:19) at processTicksAndRejections (<node_internals>/internal/process/task_queues:95:5) gaxios.js:149 Process exited with code 1 仅当我尝试生成要与Promise.all一起使用的承诺列表时,才会发生: const promises = emailList.map((email) => { return this.gmailApi.users.messages.get({ userId: 'me', id: email.id, }) }) const resolvedPromises = await Promise.all(promises) 但是,如果我只手动执行前 10 个承诺,而不将每个承诺映射到我的 promises 变量,那么它就会起作用。看来它只会在我用 .map 迭代每个承诺之后才会导致错误...我的问题是:为什么会发生这种情况? Node 在幕后做什么? 尝试下面的代码。我对您的代码做了一些细微的更改并处理了一些错误。 我想知道 .get() 是一个调用其他 api 的方法吗?然后您可以使用 axios 包通过传递所有身份验证令牌等来获取数据。 const fetchUserData = async (emailId) => { try{ let data = await this.gmailApi.users.messages.get({ userId: 'me', id: emailId, }) return data } catch(error){ console.log(error) return {} } }; const userPromises = emailList.map(fetchUserData); Promise.allSettled(userPromises) .then((users) => { console.log(users); }) .catch((error) => { console.error(error); });

回答 1 投票 0

Angular RXJS 重试

有人可以帮助我使用 Angular/RXJS 编写的代码来实现以下解决方案 我必须使用 window.open() 打开一个弹出窗口来加载一个网站,该网站大约需要 15-20 秒......

回答 1 投票 0

递归 AJAX 调用 JQuery 和 SharePoint 以从 SharePoint 列表中获取所有项目

我想从 SharePoint 列表中检索所有项目。该列表有超过 5000 个元素,因此需要对 REST-API 进行递归 ajax 调用。我可以将所有数据调用到一个数组中,但是代码...

回答 1 投票 0

等待多个Promise完成

我正在使用 Ionic 平台的 SQLStorage。删除函数返回一个承诺。在我的代码中,我需要删除多个值。当这些都完成后,我需要执行一些代码。 怎么...

回答 6 投票 0

Jasmine 角度测试异步承诺

我需要在 Jasmin 中测试异步承诺,但我不知道如何去做,因为角度每次都会返回错误。 myService.ts 异步 getNewContext(): Promise { 常量测试1 = ...

回答 1 投票 0

[UnhandledPromiseRejection]:如果最后一个 Promise 拒绝,为什么要尝试...catch 处理 Promise 拒绝,但中间拒绝会抛出错误?

异步函数 all(...params) { 让结果=[]; for(让参数承诺){ 尝试 { 让 res = 等待承诺; 结果.push(res); } 捕获 (e) { 结果.push({ 错误...

回答 1 投票 0

Promise 重新定义不会影响原生函数返回的 Promise

(另请参阅此答案。) 当我重新定义 Promise 类(使用“monkey-patch”,如下所示)时,这不会影响由 fetch 等本机函数返回的 Promise: 舞会...

回答 1 投票 0

使用 Promise 等待轮询条件满足

我需要创建一个 JavaScript Promise,在特定条件成立之前该 Promise 不会解析。 假设我有一个第三方库,我需要等到某个数据条件存在...

回答 6 投票 0

如何找到被拒绝的 Promise 的来源

最近,我们看到在 Sentry 中捕获为承诺拒绝的标题为 Event CustomEvent (type=unhandledrejection) 的错误急剧增加。根据迄今为止的研究,看起来承诺得到了兑现......

回答 1 投票 0

nodejs承诺在函数执行之前返回

我正在尝试调用promise.allSettled中的fetch方法。但该方法返回的值为空。 fetch 需要时间,响应之前已返回。 期望的结果:我想要所有图像

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.