angular - getItemForm 不调用第二个承诺
问题描述
我有一个调用 api.send 服务两次的函数,但是当我做测试期望它解决两个承诺时,它只返回 res1,而不是 res2,我该如何解决?
我的功能:
getItemForm = () => {
this.api.send('filter', 'get', { lang: 'ES', filter: { id: this.item['id'] } }).then(res1 => {
this.item = res1['data'][0];
this.api.send('filter', 'get', { lang: 'EN', filter: { id: this.item['id'] } }).then(res2 => {
let itemEng = res2['data'][0];
});
});
};
我的测试:
it('should call api.send with res Eng', () => {
component.formDef = [{ field_id: 57, field_key: "name1", field_name: 'test1' }];
let res1 = { data: [{ id: 1, name: 'test1' }, { id: 2, name: 'test1' }] };
let res2 = { data: [{ id: 1, name: 'test2' }, { id: 2, name: 'test' }] };
component.item = let item = {id:1, count: 1, data:[{id: 1, tacticas: {95: [135]}}]};
let spy1 = spyOn(api, 'send').and.returnValues(Promise.resolve(res1), Promise.resolve(res2));
component.itemToForm();
expect(spy1).toHaveBeenCalled();
expect(spy1).toHaveBeenCalledTimes(2);
解决方案
我强烈认为你应该改变你的功能的实现。您没有从中返回任何东西,甚至不确定您是如何获得的res1
。做这样的事情:
getItemForm = async () => {
const res1 = await this.api.send('filter', 'get', { lang: 'ES', filter: { id: this.item['id'] } }),
res2 = await this.api.send('filter', 'get', { lang: 'EN', filter: { id: this.item['id'] } })
return {res1, res2};
};
推荐阅读
- c++ - 如何为重载的 lambda 技巧提供复制构造函数
- javascript - 如何通过检查firebase中的对象属性来制作数组?
- php - 用于在 div 中分配不同大小的图像的 PHP/CSS 逻辑
- python - 使用 cap_sys_admin 能力 linux 以 root 身份运行 python
- javascript - 可以让 Winston 包含创建条目的记录器吗?
- jenkins - 在 jenkins 管道中批准 github PR
- python - 如何在不导入的情况下输入提示
- vert.x - 在具有全双工 ReadStream 和 WriteStream 的 GRPC 的情况下发送错误
- javascript - 尽管 http 200 服务器发送事件错误
- python - 未定义符号:_ZTVN10__cxxabiv120__si_class_type_infoE:当通过 python 导入 c++ 方法时