mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2025-05-14 05:52:43 +00:00
update documents (#19868)
This commit is contained in:
parent
8aaba65eee
commit
6171ea7d31
6 changed files with 56 additions and 95 deletions
|
@ -64,7 +64,7 @@ Discouraged implementations:
|
|||
Only mark a function as `async` if and only if there are `await` calls
|
||||
or `Promise` returns inside the function.
|
||||
|
||||
It's not recommended to use `async` event listeners, which may lead to problems.
|
||||
It's not recommended to use `async` event listeners, which may lead to problems.
|
||||
The reason is that the code after await is executed outside the event dispatch.
|
||||
Reference: https://github.com/github/eslint-plugin-github/blob/main/docs/rules/async-preventdefault.md
|
||||
|
||||
|
@ -73,50 +73,6 @@ it's recommended to use `const _promise = asyncFoo()` to tell readers
|
|||
that this is done by purpose, we want to call the async function and ignore the Promise.
|
||||
Some lint rules and IDEs also have warnings if the returned Promise is not handled.
|
||||
|
||||
#### DOM Event Listener
|
||||
|
||||
```js
|
||||
el.addEventListener('click', (e) => {
|
||||
(async () => {
|
||||
await asyncFoo(); // recommended
|
||||
// then we shound't do e.preventDefault() after await, no effect
|
||||
})();
|
||||
|
||||
const _promise = asyncFoo(); // recommended
|
||||
|
||||
e.preventDefault(); // correct
|
||||
});
|
||||
|
||||
el.addEventListener('async', async (e) => { // not recommended but acceptable
|
||||
e.preventDefault(); // acceptable
|
||||
await asyncFoo(); // skip out event dispatch
|
||||
e.preventDefault(); // WRONG
|
||||
});
|
||||
```
|
||||
|
||||
#### jQuery Event Listener
|
||||
|
||||
```js
|
||||
$('#el').on('click', (e) => {
|
||||
(async () => {
|
||||
await asyncFoo(); // recommended
|
||||
// then we shound't do e.preventDefault() after await, no effect
|
||||
})();
|
||||
|
||||
const _promise = asyncFoo(); // recommended
|
||||
|
||||
e.preventDefault(); // correct
|
||||
return false; // correct
|
||||
});
|
||||
|
||||
$('#el').on('click', async (e) => { // not recommended but acceptable
|
||||
e.preventDefault(); // acceptable
|
||||
return false; // WRONG, jQuery expects the returned value is a boolean, not a Promise
|
||||
await asyncFoo(); // skip out event dispatch
|
||||
return false; // WRONG
|
||||
});
|
||||
```
|
||||
|
||||
### HTML Attributes and `dataset`
|
||||
|
||||
We forbid `dataset` usage, its camel-casing behaviour makes it hard to grep for attributes. However there are still some special cases, so the current guideline is:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue