假设我有一个函数,它接收一个值为promise的对象,并等待解析所有的promise,如下所示:
function aggregatePromiseValues<T>(promiseObject: { [key: string]: Promise<T> }) {
/* the type is *NOT* correct */
const promises = [];
const result = {};
for (let key in promiseObject) {
const valuePromise = promi
我有一个工厂函数,它直接返回http承诺(它大约有3层深,我根本不关心路径和返回的内容)
看起来是这样的:
user.create()
.success(function(result){})
.error(function(err){})
我只想嘲笑一下成功和错误。我尝试过使用$q并解决或拒绝它,但这似乎不成功和错误。
我的带有Q的模拟工厂看起来如下:
var user = {
create: function (email) {
var deferred = q.defer();
deferred.resolve();
我试图为任意的承诺返回函数编写一个包装器,使任何调用都等待前面的调用完成。
JavaScript实现在下面,但是我很难为类型记录实现编写类型。如何将fn参数键入为泛型承诺返回函数?
function serializePromises(fn) {
// This works as our promise queue
let last = Promise.resolve();
return function (...args) {
// Catch is necessary here — otherwise a rejection in a promise will
我有useEffect回调,在这里我从几个API中获取一些数据。为此,我使用了Promise,代码如下所示:
useEffect(() => {
const fetchAllData = async () => {
const resourceOne = new Promise((resolve) => {
// fetching data from resource one and changing some states
})
const resourceTwo = new Promise((resolve) =
Typescript@4.0.0rc9
在打字脚本编写定义中,用于手工编写的函数。当最终返回值为非promise时,它们可以工作,但当返回值为promise时,它们会失败。例如,这是可行的:
function test (
a: number,
): (
b: number,
) => number
function test (
a: number,
b: number,
): number
function test (a, b?) {
if (b === undefined)
return function (b: number) { test(a,
我对Typescript中的Promises和Async仍然相当陌生,我仍然在尝试理解实现定义功能的异步逻辑的最好方法。
我想要编写一个包含一个循环的函数,该循环将触发几个AJAX请求。在等待所有AJAX请求完成然后返回Array的最佳方式上,我有点困惑。我想出了下面的实现,但我想知道这种方式是否是最好的方法。我还想知道如果其中一个AJAX请求失败并进入catch块,这是如何处理的?该数组是否具有用于该特定迭代的null对象?
public async MultipleAsyncCalls(): Promise<Promise<ItemInfo>[]> {
le
我正在编写一些多线程代码,并使用诺言/未来调用不同线程上的函数并返回其结果。简单地说,我将完全删除线程部分:
template <typename F>
auto blockingCall(F f) -> decltype(f())
{
std::promise<decltype(f())> promise;
// fulfill the promise
promise.set_value(f());
// block until we have a result
return promise.get_future()
我正在尝试为amqplib npm包编写一个reasonml绑定:
特别是这个函数:
class type amqpMessageT = [@bs] {
pub content: nodeBuffer
};
type amqpMessage = Js.t(amqpMessageT);
type gottenMessage = Js.Nullable.t(amqpMessage);
type qualifiedMessage = Message(gottenMessage) | Boolean(bool);
class type amqpChannelT = [@bs] {
我试图编写一个函数,该函数将接受一个对象并返回一个嵌套函数,该函数将接受回调并返回相同类型的函数。不幸的是,我无法以这种方式编写它,因此结果将具有与回调相同的类型
type Constructor<T> = new (...args: any[]) => T
export type Settings = {
maxCalls: number
interval: number
errors: Constructor<Error>[]
}
export function withRetryDelayed<R, U extends any[
为什么Promise.then()中的代码没有被调用?
我正在用expressjs和bluebird promise.When编写服务器我试着用Promise.promisify()来实现一个函数,我发现我用Promise.then()写的代码没有work.My代码,如下所示
var Promise = require('bluebird');
var test = function(req) {
console.log('123');
};
var regist=Promise.promisify(test);
app.post('/te
如果状态是'ready‘,我想进行一些API调用,然后在解析后只调用一次,我想执行一些语句。
如果状态不是ready,我不想进行API调用,但仍然会执行语句。
我是这样做的:
if(job.status === 'ready')
//Makes a promise to fetch the progress API details for ready batches only
var promise = HttpWrapper.send('/api/jobs/'+job.job_id+'/getDetails', {
let locArr = [{ x: 0, y: 0 }, { x: 2, y: 4 }, { x: 6, y: 8 }];
// my asynchronous function that returns a promise
function findLoc(x, y) {
return new Promise((resolve, reject) => {
let a = setTimeout(() => {
resolve({ x: x * x, y: y * y });
}, 500);
});
}
我正在编写TypeScript,并希望创建类似于Exclude<void, Promise<void>>的东西,它允许void,但不允许Promise<void>。
type A = (a: number) => Promise<void>
type B = (a: number) => void
declare let a: A
declare let b: B
// it does not cause type error
b = a
// what i want to do...
// but it is identical
到现在为止,我一直以为我在JavaScript是不错的。我想为我的HTTP请求编写一个辅助函数。我用Jest测试过了。问题是catch()部件不会被触发。让我先给你做个测试:
it("recognizes when a response's status is not okay", () => {
fetch.mockResponseOnce(JSON.stringify({ ok: false }));
expect.assertions(1);
return getRequestWithoutHeader(fullTestUrl).catch(
我有一个使用AngularJS的项目,它希望在$http服务之上制作一个包装器。我希望我的请求承诺拥有abort()方法。
如果我写
function request(params:ng.IRequestConfig):my.IRequestPromise {
var promise = $http(params).then(onSuccess, onError);
promise.abort = function () { // => here it fails with error "Property 'abort' does not exist on