例如 p = new Promise(function (resolve, reject) { throw 'err'; }); p.done(); 在大多数承诺的polyfill库中,done会抛出一个错误,并且当前的执行会退出。 但是,如果我们使用p.then() ,什么都不会发生。 这个错误被诺言吞噬了。 如果我们使用p.catch ,我们无法退出当前的执行。 我想实现这样的事情: try { // something } catch (err) { if (check(err)) { throw err; } }
我正在研究BreezeJs,并且有示例使用Q.js来承诺处理asynchronous调用。 John Papa也使用Q. JQuery也有承诺 。 两者有什么区别?
我有这个代码: app.controller('MainCtrl', function ($scope, $http){ $http.get('api/url-api') .success(function (data, status, headers, config){ } } 在我的本地环境中,工作正常,但在服务器中,返回此错误: TypeError:$ http.get(…)。成功不是一个函数 有任何想法吗? 谢谢
我有一些代码返回一个承诺对象,例如使用Q库的NodeJS。 var Q = require('q'); /** * @returns ??? */ function task(err) { return err? Q.reject(new Error('Some error')) : Q.resolve('Some result'); } 如何使用JSDoc文档这样的返回值?
承诺,只是例如 var P = new Promise(function (resolve, reject) { var a = 5; if (a) { setTimeout(function(){ resolve(a); }, 3000); } else { reject(a); } }); 我们打电话之后再承诺的方法: P.then(doWork('text')); doWork函数看起来像这样: function doWork(data) { return function(text) { // sample function to console log consoleToLog(data); consoleToLog(b); } } 我如何避免doWork中的内部函数,从promise和text参数访问数据? 如果有什么窍门? 谢谢。
无论是ES6承诺还是蓝鸟承诺,Q承诺等等。 我如何testing以查看给定对象是否是Promise?
假设我有一个Promise.all()来处理两个promise。 如果一个承诺产生一个错误,但另一个承诺,我希望能够处理Promise.all()已经解决后的情况的基础上的错误。 ES6承诺错过了解决方法,我假设有一个很好的理由。 但是我不禁想到.settle()方法会让这个问题更容易。 我是以这种错误的方式去做的,还是用一种解决方法扩展ES6的承诺是正确的事情呢? 我想如何使用.settle()一个例子: Promise.all([Action1,Action2]) .settle(function(arrayOfSettledValues) //if 1 failed but not 2, handle //if 2 failed but not 1, handle //etc…. )
我有一个JavaScript函数,我想返回返回方法后得到的值。 比解释更容易看 function getValue(file){ var val; lookupValue(file).then(function(res){ val = res.val; } return val; } 用诺言来做这件事的最好方法是什么? 据我了解, return val将返回之前lookupValue已经完成了,但我不能return res.val ,因为它只是从内部函数返回。
$ q服务在angularjs中非常强大,并且使asynchronous代码更轻松。 我是新angular度,但使用延期的API对我来说并不是很新鲜。 我必须说,我完全确定How to use文档的一部分+有非常有用的链接,在文档+我检出了源。 我的问题是更多关于延迟和承诺的API对象的angular度下的引擎盖部分。 它们生命周期中的确切阶段是什么?它们如何与rootScope.Scope (s)交互。 我的假设是,当承诺解决 – 它调用摘要循环? 是/否? 能否详细回答以下几个方面的具体问题: 每个描述的步骤/阶段发生的事情的顺序是什么? 当新的延迟对象与一个新的承诺实例创build – 谁知道它/是否重要? 承诺对象解决时,范围如何更新? 是否必须在callback中手动更新它,否则将自动调用摘要并更新rootScope, 如同在此处声明的那样 提及至less一种从promisecallback中更新范围的方法 我假设有很多其他有用的方面,随时提供他们。 我会欣赏并接受最详细的答案,尽可能多地引用文档或来源(我自己找不到)。 我找不到任何以前的讨论这个话题,如果已经有 – 请张贴链接。 ps:对任何一个有帮助的人都可以通过为这个问题build议一个更好的标题,请在评论中添加您的build议。 干杯!
我必须做一个fetch()的序列Promise:我一次只有一个url,这意味着只有一个fetch() promise。 每次我收到一个json,这个包含另一个json的url,所以我必须做另一个fetch()承诺。 我能够与多个承诺,但在这种情况下,我不能做Promise.all() ,因为我没有所有的url,但只有一个。 这个例子不起作用,它全部冻结。 function fetchNextJson(json_url) { return fetch(json_url, { method: 'get' }) .then(function(response) { return response.json(); }) .then(function(json) { console.log(json); return json; }) .catch(function(err) { console.log('error: ' + error); }); } function getItems(next_json_url) { if (!(next_json_url)) return; get_items = fetchNextJson(next_json_url); interval = $q.when(get_items).then(function(response) { console.log(response); next_json_url = response.Pagination.NextPage.Href; }); getItems(next_json_url); } var […]