Можно ли передать неуместный обратный вызов в Waitfor?Javascript

Форум по Javascript
Ответить
Anonymous
 Можно ли передать неуместный обратный вызов в Waitfor?

Сообщение Anonymous »

Я шел по дороге, чтобы отреагировать (книга Робина Вируха), и я столкнулся с запутанным куском кода. Код находится в главе тестирования, стр. 227: < /p>

Код: Выделить всё

describe('App', () => {
it('succeeds fetching data',
async () => { const promise = Promise.resolve({ data: { hits: stories,},
});

axios.get.mockImplementationOnce(() => promise);

render();

expect(screen.queryByText(/Loading/)).toBeInTheDocument();

await waitFor(async () => await promise);

expect(screen.queryByText(/Loading/)).toBeNull();
});
});

Это использование Eaffect code:

Код: Выделить всё

React.useEffect(() => {
handleFetchStories();
}, [url);

Это handlefetchstories и StoriesReducer :

Код: Выделить всё

// handleFetchStories

const handleFetchStories = React.useCallback(async () => {
dispatchStories({ type: 'STORIES_FETCH_INIT' });
const result = await axios.get(url);
dispatchStories({ type: 'STORIES_FETCH_SUCCESS',
payload: result.data.hits,
});

try {
const result = await axios.get(url);
dispatchStories({ type: 'STORIES_FETCH_SUCCESS',
payload: result.data.hits,});
}
catch {
dispatchStories({ type: 'STORIES_FETCH_FAILURE' });
}
}, [url]);

// StoriesReducer
const storiesReducer = (state, action) => {
switch (action.type) {
case 'STORIES_FETCH_INIT':
return { ...state,
isLoading: true,
isError: false,
};
case 'STORIES_FETCH_SUCCESS':
return { ...state,
isLoading: false,
isError: false,
data: action.payload,
};
case 'STORIES_FETCH_FAILURE':
return { ...state,
isLoading: false,
isError: true,
};
case 'REMOVE_STORY':
return { ...state,
data: state.data.filter( (story) => action.payload.objectID !== story.objectID ),
};
default:
throw new Error();
}
};

< /code>
Моя проблема с этой строкой: < /p>
await waitFor (async () => await promise)
Я понимаю поведение Waitfor , но кажется, что этот код является избыточным, учитывая, что обещание уже разрешено. Однако код работает. Кроме того, обратный вызов не имеет ничего общего с обновлением DOM, поэтому я подозреваю, что это неуместное использование Waitfor . Итак, мой вопрос: если заявленная строка кода избыточной, почему
работает код? < /P>

Подробнее здесь: https://stackoverflow.com/questions/796 ... to-waitfor
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»