网站搜索

javascript - 我如何在 AngularJS 单元测试中解析一个 promise

我正在使用基本的 karma/jasmine 配置来测试我的 Angular 代码。 这是我的测试:

var $controllerConstructor, ctr, mockSuperheroData, scope, deferred, q; describe('main controller', function() { var $controllerConstructor, ctr, mockSuperheroData, scope, deferred, q; beforeEach(inject(function($controller, $rootScope

阅读更多 →

javascript - 使用 jQuery 返回 AJAX promise 的结果

有人能解释一下为什么在以下示例中,foo() 返回的是整个 promise 而不仅仅是数据吗?以及如何让 foo() 只返回数据?

var foo = function() { var promise = $.ajax({ type: 'POST', url: 'http://example.com' }) return promise.done(function(data) { return data }) } console.log(foo())

谢谢!

答案#1

Don

阅读更多 →

javascript - 如何在 for 循环(每次迭代都会生成一个 promise)完成后返回单个 promise?

我的 Promise 返回代码有问题,我有一个函数 getTagQuotes,它包含一个 for 循环,该循环可以多次调用 API 将数据返回到数组中。

我的这段代码如下开始:

// If there are tags, then wait for promise here: if (tags.length > 0) { // Setting promise var to getTagQuotes: var prom

阅读更多 →

JavaScript - 为多个请求只运行一个 Promise

我想让对象请求一个 JavaScript promise,但我不希望它们创建单独的 promises。我想实现的逻辑如下——检查一个 promise 是否处于 pending 状态,只有在不是 pending 时才创建一个新的 promise。这可能吗?根据文档,我无法检查 promise 的状态,我只能在它被 fulfilled 之后处理它,但我不想为每个 promise 请求调用处理函数,也不想运行多个 Promises,如果一个 Promise 的回调可以响应所有过去的请求...

我尝试通过这种方式解决的问题是从外部服务器获取数据,并在接收到数据后通过事件将其广播给多个对象

阅读更多 →

为什么 jQuery 的 promise 有 done(),而 Mozilla 文档中的 Javascript promise 没有?如果我想在 JS 中使用 done(),该怎么办?

Mozilla 的 JavaScript 文档中的 Promises(参见 API 页面)和 jQuery 的 Promises(参见 API 页面)有什么区别?

Mozilla 的 Promise 似乎只有两种方法:then 和 catch。jQuery 的 Promise 似乎有更多的方法,包括:then、done 和 fail。(来自这里)

为什么 Mozilla 上的 JS API 没有 done()?如果我想在 JavaScript 中实现 done

阅读更多 →

javascript - 将返回 promise 的函数放入 redux 状态

我稍后会解释为什么我想这么做。问题如下。我有一个返回 Promise 的函数,如下所示:

const testFunc = () => { return new Promise((resolve, reject) => { setTimeout(() => { if (Math.random() > 0.5) { resolve('succeeded'); } else { reject('failed'); } }, 1000); }); };

不出

阅读更多 →

javascript - 为什么我的 ES6 Promise 拒绝需要立即被处理才能避免控制台错误消息?

请注意:以下是一个在不同浏览器上表现不同的问题。因此,这可能是浏览器实现的问题。不管怎样,我仍然希望得到一些建议。

在我的应用程序中,我正在创建几个可能要在相当长的一段时间之后才使用的承诺。这应该没问题,毕竟它们是承诺。

如果所存储的承诺被解决了,就没有问题。我可以在未来任意时间使用它,并且可以使用任意次数。正如预期的那样。

然而,如果被存储的承诺被拒绝,就会出现问题。除非我在拒绝发生后不久(不确定具体多久)处理这个拒绝,否则在 Chrome 或 Firefox 中

阅读更多 →

javascript - 未捕获的(在 promise 中)DOMException:该元素没有支持的来源

在我的 AngularJs 应用中使用 music-frequency-d3 进行音频可视化,使用 music-frequency-d3 创建了一个 bower 组件,但是当我将音频的网页地址作为 src 属性的值插入时,它显示以下错误。

未捕获的(在 promise 中)DOM 异常:该元素没有受支持的资源

这里有什么问题?我如何使用网页地址 URL 播放音频?

谢谢

答案#1

这是跨域访问限制问题

添加

阅读更多 →

javascript - 如何将触发器/事件转换为 Promise 或 async/await?

我正在尝试将回调函数转换为 async/await。代码使用主窗口框架向 iframe 发送 postMessage。当 iframe 发送消息回来的时候,它会调用回调函数。有没有办法将 $ (window).on(...) 模式转换为 Promise?

可运行代码的最小版本:

调用函数:

window.bridge.post(cb);

桥对象:

class Bridge { constructor(win, root) { this.win

阅读更多 →

javascript - 为什么 VS Code 在 Promise 中拒绝(Reject)后处理的异常会中断?

拿这段代码,我们有一个承诺(promise)调用一个会失败的函数,它应该将错误传递给承诺的 catch 方法。 从终端运行时完全正常。但是通过 VSCode 运行时,会在 (1) 处爆炸。

function failingFunc() { let undef = undefined; return undef.nope(); } let promise = new Promise((resolve, reject) => { resolve(failingFunc()); // (1) Explodes when run from vscode }); promise.then(v => {}).catch((e: Error) => { console.log(e.message); // (2) Prints when run from the terminal });

这是为什么?

vscode 关于页面:

阅读更多 →