gpt4 book ai didi

angular - 函数从 pouchDB 获取委托(delegate),插入一些调试数据并返回一个 promise

转载 作者:行者123 更新时间:2023-12-02 05:56:33 25 4
gpt4 key购买 nike

我假装拦截来自 pouchDB 的函数并将其发送到日志 API。之后我会向任何需要使用的部分返回一个 promise 。

我创建了一个接受委托(delegate)和任何类型的参数的函数。但返回给我一条错误消息:

ERROR Error: Uncaught (in promise): TypeError: Cannot read property '_closed' of undefined
TypeError: Cannot read property '_closed' of undefined
at vendor.js:172457
at vendor.js:81588
at vendor.js:172415
at new t (polyfills.js:3)
at vendor.js:172402
at vendor.js:81588
at main.js:54
at new t (polyfills.js:3)
at LogSystemProvider.webpackJsonp.111.LogSystemProvider.interceptAndDebug (main.js:52)
at DbService.webpackJsonp.43.DbService.bulkDocs (main.js:6141)

功能:

public interceptAndDebug(func: DelegateDTO): Promise<any>;
public interceptAndDebug(func: DelegateDTO, param: any): Promise<any>;
public interceptAndDebug(func: DelegateDTO, param?: any): Promise<any> {
return new Promise((resolve, reject) => {
if(param){
func( param )
.then((res)=>{

let msg: ValueDebug = {
nameFunc: func.name,
param: param,
sucess: res
}

this.CreateLog({
msg: JSON.stringify(msg),
isDebugger: true
});

resolve(res);
})
.catch((err)=>{

let msg: ValueDebug = {
nameFunc: func.name,
param: param,
error: err
}

this.CreateLog({
msg: JSON.stringify(msg),
isDebugger: true
});

reject(err)
});
}else{
func()
.then((res)=>{

let msg: ValueDebug = {
nameFunc: func.name,
param: param,
sucess: res
}

this.CreateLog({
msg: JSON.stringify(msg),
isDebugger: true
});

resolve(res);
})
.catch((err)=>{

let msg: ValueDebug = {
nameFunc: func.name,
param: param,
error: err
}

this.CreateLog({
msg: JSON.stringify(msg),
isDebugger: true
});

reject(err)
});
}


});
}

委托(delegate)DTO:

export interface DelegateDTO {
(any?): Promise<any>;
}

函数的使用:

bulkDocs( list: Array<any> ){
return this._logSystem.interceptAndDebug(this._db.bulkDocs, list);
}

有人可以帮助我吗?

最佳答案

如果 bulkDocsthis._db 的方法,您可能需要绑定(bind)它,这样它就不会丢失 this._db 的上下文>:

return this._logSystem.interceptAndDebug(this._db.bulkDocs.bind(this._db), list);

关于angular - 函数从 pouchDB 获取委托(delegate),插入一些调试数据并返回一个 promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52101073/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com