gpt4 book ai didi

javascript - 使用Angular 2调用基于jQuery的Javascript ajax库

转载 作者:行者123 更新时间:2023-11-27 22:34:14 25 4
gpt4 key购买 nike

我有一种感觉,我只是想把一个方钉装入一个圆孔中,但我试图用 Angular2 和 Typescript 应用一些东西,但我却在用头撞墙。

我编写了一个 Javascript 模块,它充当我正在使用的 API 的 API 客户端库。它只是封装了一些便利的东西,例如设置正确的 API key 、根据某些所需数据切换 key 等。它基本上只是一个便利库。

大多数方法都遵循这样的模式:您提供查询项,然后执行回调。

例如:

API.searchAutocomplete("angular", function(err, data) {
// handle the data/error
});

在该方法中:

searchAutocomplete:函数(查询,回调){ //使用数据负载、url、 header 等设置请求

  $.ajax(settings)
.done(function(response) {
// callback with success
})
.fail(function () {
// callback with error
});
}

我正在努力尝试了解如何在带有 Promise(方钉圆孔)的 Angular 服务中的 Typescript 中运行此函数。或者我应该在服务中传递一个回调并将其视为 Javascript?

我的尝试:

public getAutocomplete(query:string): Promise < any > {
return new Promise((resolve, reject) => {
API.searchAutocomplete(query, function (err, result) {
if (err) {
reject(err);
return;
}
resolve(result);
});
});
}

其次,我已经能够将库加载到我的 Angular 应用程序中,但我似乎无法实际发出任何请求。即使我打破控制台并访问库对象,它似乎实际上并没有发出任何网络请求。我真的不明白。

编辑:我已经整理了这部分。

当我让服务调用返回一个 promise 时,我必须订阅该 promise ,否则我将无法正确执行它。我认为我仍然需要了解如何编写服务调用以返回可观察值并映射回调响应。

最佳答案

正如预期的那样,我试图做比我应该做的更多的工作。

这非常简单,只需返回一个调用外部库的可观察对象即可。

public autoCompleteResults(query: string): Observable<string[]> {
return new Observable<string[]>(observer => {
API.searchAutocomplete(query, function (err, result) {
if (err) {
console.log(err);
observer.next([]);
// OR
observer.error(err);
return;
}

observer.next(result);
});
});

}

关于javascript - 使用Angular 2调用基于jQuery的Javascript ajax库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39284100/

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