Promise是延迟计算的一种策略,适用于多种并发风格:本地计算的线程和事件循环并发,以及同步和异步远程消息传递。 promise表示异步操作的最终结果。使用promises的主要方法是通过一种方法,将promise的最终值或失败原因的转换注册到新的promise。
Promise .then() 在 for 循环内按顺序运行
我试图通过多个连续的 API 调用来依次填充我的 $scope.results = [] 。顺序很重要,因为我传递了一个开始和一个限制数字(类似于分页)。有一个
我想将await Promise.all与axios一起使用,以便可以同时发送请求。我有一个地图,其中键作为 id,值作为 url。我想也以类似的方式保留输出...
有什么方法可以在 AngularJS 2 中组合 Promise 吗? 例如,在 Angular 1 中,我会使用 $q.all 将多个请求组合成一个承诺。 Angular 2 有等效的吗?
`for wait` 和等待从同步迭代获得的 Promise 之间有什么区别?
我知道有很多资源解释await...of,但我认为我不会完全掌握这个概念,直到我看到一个以完全相同的方式工作但具有更基本语法的示例。 ...
我知道有很多资源解释await...of,但我认为我不会完全掌握这个概念,直到我看到一个以完全相同的方式工作但具有更基本语法的示例。 ...
如何使用 Promise 等待 Javascript 库加载?
我正在构建一个解决方案,其中多个Javascript库根据用户的交互在不同的时间点动态加载。加载库后,
我对 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); }
我对 std::future 和 std::promise 之间的区别感到困惑。 显然,他们有不同的方法和内容,但实际用例是什么? 是吗?: 当我管理一些异步时
我正在构建一个解决方案,其中多个Javascript库根据用户的交互在不同的时间点动态加载。加载库后,
我有一个 Angular/Django 应用程序,当我重复刷新页面时,在大约 10% 的情况下,lastValueFrom 的结果为空。不过,其余时间,我都能看到正确的数据。 这是我的
我正在从电子表格中获取和处理数据,如下所示: const getJsonSheet = async () => { const 响应 = 等待 fetch(''); 常量数据...
这可能看起来是一个愚蠢的问题,但我是这个主题的新手。我正在 Nodejs 上使用 Promise,并且想将参数传递给 Promise 函数。但是我不知道如何...
我是 javascript 的新手,现在正在学习 Promise 部分。 下面我一直在尝试用 setTimeout 编写一个承诺链,并期望它在 2 秒后打印“第一个结果”,并打印“...
我正在使用一个节点库,它允许发出简单的http请求并返回一个承诺 - 这工作得很好,因为它允许并行发出几个请求,然后我稍后会收集它们......
在与同事一起使用 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); });
有人可以帮助我使用 Angular/RXJS 编写的代码来实现以下解决方案 我必须使用 window.open() 打开一个弹出窗口来加载一个网站,该网站大约需要 15-20 秒......
递归 AJAX 调用 JQuery 和 SharePoint 以从 SharePoint 列表中获取所有项目
我想从 SharePoint 列表中检索所有项目。该列表有超过 5000 个元素,因此需要对 REST-API 进行递归 ajax 调用。我可以将所有数据调用到一个数组中,但是代码...
我正在使用 Ionic 平台的 SQLStorage。删除函数返回一个承诺。在我的代码中,我需要删除多个值。当这些都完成后,我需要执行一些代码。 怎么...
我需要在 Jasmin 中测试异步承诺,但我不知道如何去做,因为角度每次都会返回错误。 myService.ts 异步 getNewContext(): Promise { 常量测试1 = ...
[UnhandledPromiseRejection]:如果最后一个 Promise 拒绝,为什么要尝试...catch 处理 Promise 拒绝,但中间拒绝会抛出错误?
异步函数 all(...params) { 让结果=[]; for(让参数承诺){ 尝试 { 让 res = 等待承诺; 结果.push(res); } 捕获 (e) { 结果.push({ 错误...