Questions tagged «es6-promise»

ES6 Promise是ECMAScript 2015对象,代表正在进行的异步操作

6
为什么我不能扔在Promise.catch处理程序中?
为什么我不能只Error在catch回调内部抛出错误,让进程像在其他作用域中一样处理错误? 如果我不这样做,那么console.log(err)什么也不会打印出来,我也不知道发生了什么。这个过程刚刚结束... 例: function do1() { return new Promise(function(resolve, reject) { throw new Error('do1'); setTimeout(resolve, 1000) }); } function do2() { return new Promise(function(resolve, reject) { setTimeout(function() { reject(new Error('do2')); }, 1000) }); } do1().then(do2).catch(function(err) { //console.log(err.stack); // This is the only way to see the stack throw err; // …


16
取消香草ECMAScript 6 Promise链
是否有清除.thenJavaScript Promise实例的方法? 我已经在QUnit之上编写了一个JavaScript测试框架。该框架通过在.NET中运行每个测试来同步运行测试Promise。(很抱歉,此代码块的长度。我已尽我所能对其进行了评论,因此它不那么乏味。) /* Promise extension -- used for easily making an async step with a timeout without the Promise knowing anything about the function it's waiting on */ $$.extend(Promise, { asyncTimeout: function (timeToLive, errorMessage) { var error = new Error(errorMessage || "Operation timed out."); var res, // resolve() rej, …

5
承诺,传递其他参数然后链接
一个承诺,例如: var P = new Promise(function (resolve, reject) { var a = 5; if (a) { setTimeout(function(){ resolve(a); }, 3000); } else { reject(a); } }); 在我们调用之后,然后在promise上的方法: P.then(doWork('text')); doWork函数如下所示: function doWork(data) { return function(text) { // sample function to console log consoleToLog(data); consoleToLog(b); } } 如何避免在doWork中返回内部函数,以便从promise和text参数访问数据?是否有避免内部功能的技巧?

16
使用ES6的Promise.all()时限制并发的最佳方法是什么?
我有一些代码遍历从数据库中查询出来的列表,并对该列表中的每个元素进行HTTP请求。该列表有时可能是一个相当大的数目(成千上万个),并且我想确保我不会遇到具有成千上万个并发HTTP请求的Web服务器。 该代码的缩写版本目前看起来像这样... function getCounts() { return users.map(user => { return new Promise(resolve => { remoteServer.getCount(user) // makes an HTTP request .then(() => { /* snip */ resolve(); }); }); }); } Promise.all(getCounts()).then(() => { /* snip */}); 该代码在节点4.3.2上运行。重申Promise.all一下,是否可以进行管理以便在任何给定时间仅进行一定数量的承诺?

2
解决后,为什么javascript ES6 Promises继续执行?
据我了解,promise是可以resolve()或reject()的东西,但令我惊讶的是,发现promise中的代码在调用了resolve或reject之后仍继续执行。 我认为resolve或reject是exit或return的异步友好版本,它将终止所有立即执行的函数。 有人可以解释为什么下面的示例有时会在resolve调用后显示console.log的原因: var call = function() { return new Promise(function(resolve, reject) { resolve(); console.log("Doing more stuff, should not be visible after a resolve!"); }); }; call().then(function() { console.log("resolved"); }); jsbin

5
如何返回许多承诺并在执行其他操作之前等待所有承诺
我有一个循环,该循环调用异步完成的方法。该循环可以多次调用该方法。在这个循环之后,我有另一个循环,仅当所有异步工作完成后才需要执行。 所以这说明了我想要的: for (i = 0; i < 5; i++) { doSomeAsyncStuff(); } for (i = 0; i < 5; i++) { doSomeStuffOnlyWhenTheAsyncStuffIsFinish(); } 我对诺言不太熟悉,所以有人可以帮助我实现诺言吗? 这是我的doSomeAsyncStuff()举止: function doSomeAsyncStuff() { var editor = generateCKEditor(); editor.on('instanceReady', function(evt) { doSomeStuff(); // There should be the resolve() of the promises I think. }) } …

4
创建(ES6)承诺而不开始解决它
使用ES6承诺,如何在不定义解决承诺的逻辑的情况下创建承诺?这是一个基本示例(某些TypeScript): var promises = {}; function waitFor(key: string): Promise<any> { if (key in promises) { return promises[key]; } var promise = new Promise(resolve => { // But I don't want to try resolving anything here :( }); promises[key] = promise; return promise; } function resolveWith(key: string, value: any): void { …

2
fromPromise在Observable类型上不存在
在使用rxjs的Angular 2中,我试图将Promise转换为Observable。由于许多在线指南的显示我用fromPromise的Observable。哪个抛出错误: Property 'fromPromise' does not exist on type 'typeof Observable'. Observable的输入方式如下: import { Observable } from "rxjs/Observable"; 尝试fromPromise像其他运算符一样导入会导致错误: import 'rxjs/add/operator/fromPromise'; 即使我抑制打字稿错误,它仍然会导致错误: (<any>Observable).fromPromise 错误: Uncaught (in promise): TypeError: __WEBPACK_IMPORTED_MODULE_3_rxjs_Observable__.Observable.fromPromise is not a function 此处在rxjs存储库中报告了类似的问题,但那里也没有解决方案。

7
双括号在javascript中是什么意思,以及如何访问它们
情况 我有以下使用Promise的函数。 var getDefinitions = function() { return new Promise(function(resolve) { resolve(ContactManager.request("definition:entities")); }); } var definitions = getDefinitions() 的内容definitions是: Promise { [[PromiseStatus]]: "resolved", [[PromiseValue]]: child } PromiseValue直接访问属性返回未定义 var value = definitions.PromiseValue; // undefined 题 双括号[[ ]]是什么意思,以及如何检索的值[[PromiseValue]]。

6
如何调试JavaScript Promise?
我试图了解如何调试基于Promise的异步代码。承诺是指基于ECMAScript 6的承诺,而调试是指使用内置的chrome或firefox调试器。 我遇到的麻烦是-发生错误时,无论我如何“拒绝”它,我似乎都无法获取堆栈跟踪。 我尝试了这些: console.log(new Error('Error occured')); throw new Error('Throwing an Error'); return new Error('Error returned by the onRejected function'); reject(new Error('Pass Error to the reject function')); 但是这些都不返回代码或堆栈跟踪中的实际错误。 所以我的问题是-如何正确调试JavaScript Promises?

5
如果您不解决或拒绝诺言,会发生什么?
我有一个我要兑现诺言的情况。承诺基本上是由ajax请求触发的。 拒绝诺言后,它会显示一个错误对话框,提示服务器错误。 我想做的是,当响应代码为401时,我既不想解析承诺也不会拒绝承诺(因为它已经显示了错误对话框)。我只想重定向到登录页面。 我的代码如下所示: function makeRequest(ur, params) { return new Promise(function (resolve, reject) { fetch(url, params).then((response) => { let status = response.status; if (status >= 200 && status < 300) { response.json().then((data) => { resolve(data); }); } else { if (status === 401) { redirectToLoginPage(); } else { response.json().then((error) => …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.