Skip to content

feat(useAsyncState): add executeImmediate with the same type as the promise fn #4716

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 4 commits into
base: main
Choose a base branch
from

Conversation

davidglezz
Copy link
Contributor

@davidglezz davidglezz commented Apr 18, 2025

Before submitting the PR, please make sure you do the following

  • Read the Contributing Guidelines.
  • Read the Pull Request Guidelines.
  • Check that there isn't already a PR that solves the problem the same way to avoid creating a duplicate.
  • Provide a description in this PR that addresses what the PR is solving, or reference the issue that it solves (e.g. fixes #123).
  • Ideally, include relevant tests that fail without this PR but pass with it.
⚠️ Slowing down new functions

Warning: Slowing down new functions

As the VueUse audience continues to grow, we have been inundated with an overwhelming number of feature requests and pull requests. As a result, maintaining the project has become increasingly challenging and has stretched our capacity to its limits. As such, in the near future, we may need to slow down our acceptance of new features and prioritize the stability and quality of existing functions. Please note that new features for VueUse may not be accepted at this time. If you have any new ideas, we suggest that you first incorporate them into your own codebase, iterate on them to suit your needs, and assess their generalizability. If you strongly believe that your ideas are beneficial to the community, you may submit a pull request along with your use cases, and we would be happy to review and discuss them. Thank you for your understanding.


Description

Implements #4580
Closes #4580

This PR adds a executeNow method that has the same input function arguments.
Also adds a example of using execute vs executeNow
And improves the delay config description.

const { executeNow, state } = useAsyncState(originalFn), null)
// so that: replacing originalFn('some arg') by executeNow('some arg') to have state ref.

Additional context

@dosubot dosubot bot added size:XS This PR changes 0-9 lines, ignoring generated files. enhancement New feature or request labels Apr 18, 2025
@dosubot dosubot bot added size:M This PR changes 30-99 lines, ignoring generated files. and removed size:XS This PR changes 0-9 lines, ignoring generated files. labels Apr 18, 2025
@davidglezz
Copy link
Contributor Author

davidglezz commented Apr 18, 2025

I see that for some people the first parameter of the execute method, delay param, is unexpected. So I have added an example to make it more visible that exacuteNow preserves the order of parameters.

@43081j
Copy link
Collaborator

43081j commented Apr 21, 2025

im not sure about this, given you should already be able to achieve it by execute(0, fn)

i understand it is a convenience function though, so not going to block this if other maintainers approve

code looks good 👍 though i'd probably call it executeImmediate for consistency

@davidglezz davidglezz changed the title feat(useAsyncState): add executeNow that has the same type as the promise fn feat(useAsyncState): add executeImmediate with the same type as the promise fn Apr 24, 2025
@davidglezz
Copy link
Contributor Author

davidglezz commented Apr 27, 2025

@43081j What do you think of a shorter name? like run? executeImmediate is consistent but too long IMO.

For me the best would be execute and then add executeAfter or executeWithDelay, but that means breaking change.

const { run: fnName, isReady, isLoading, error } = useAsyncState(originalFn), {})
// vs (longest, divided into several lines)
const {
  executeImmediate: fnName,
  isReady,
  isLoading,
  error
} = useAsyncState(originalFn), {})

@davidglezz
Copy link
Contributor Author

I'm going to change it as you suggest, having 2 different names only increases the confusion.
Having a executeImmediate removes the current confusion about execute

@davidglezz davidglezz force-pushed the add-useAsyncState-executeNow branch from 6eba598 to e77380e Compare April 27, 2025 18:08
@davidglezz davidglezz force-pushed the add-useAsyncState-executeNow branch from e77380e to dccdf03 Compare May 4, 2025 15:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request size:M This PR changes 30-99 lines, ignoring generated files.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

useAsyncState | execute with the same type as the original function
2 participants