gpt4 book ai didi

javascript - 如何从 promise 内部返回订阅函数

转载 作者:行者123 更新时间:2023-11-30 14:32:28 24 4
gpt4 key购买 nike

我一直在像这样从我的函数返回请求:

makeConnection(data: any) {
console.log('makeConnection');
return this.api.get(data.url, data.dataToSend);
}

所以我可以这样订阅:makeConnection.subscribe();

现在我需要在进行 API 调用之前检查是否设置了一个名为 urls 的变量所以我想像这样制作一个 promise 的函数

checkIfUrlsPresent():Promise<boolean> {
return new Promise((resolve, reject) => {
if(this.urls) {
resolve(true);
return;
}
this.api.get('/service', null).subscribe((response) => {
console.log(response);
this.urls = response.value.urls;
resolve(true);
});
});
}

现在我的服务函数如下所示:

requestService(data) {
this.checkIfUrlsPresent().then(() => {
console.log('requestService');
let dataToSend = this.api.createFormData(data);
return this.api.post('/service/request/', dataToSend);
})
}

但现在我将无法像 requestService(data).subscribe() 那样订阅我的函数所以我的问题是如何在添加此 promise 的同时保持我当前的流程正常工作,或者有什么方法可以在保持此流程正常工作的同时检查我的变量是否已设置,然后再进行调用。

注意:问题是我从一个文件进行所有 api 调用,并且调用这些 API 的函数太多,所以我需要这种方式,这样我就不需要对所有文件进行更改我的页面以检查 url 是否存在。

最佳答案

快到了。还需要在函数内部返回 promise

requestService(data) {
return this.checkIfUrlsPresent().then(() => { // return the promise
console.log('requestService');
let dataToSend = this.api.createFormData(data);
return this.api.post('/service/request/', dataToSend);
})
}

关于javascript - 如何从 promise 内部返回订阅函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50961713/

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