避免承诺在创建时执行

Avoid a promise to execute when created

我不希望在脚本实际调用它之前承诺 运行,但不幸的是,默认情况下承诺 运行 创建它的那一刻。

有没有办法避免在创建 promise 时默认执行代码?

承诺不会"run"。异步通知 运行 当您调用它时,它 returns 只是一个通知方案,调用者可以使用它来了解它何时完成以及它 result/error 是什么。

目前还不完全清楚您到底想完成什么,但听起来您需要在真正开始执行之前不要调用您的异步操作。如需更具体的帮助,您必须向我们展示您的真实代码,以便我们可以了解您正在尝试做什么并提出具体的代码建议。也有可能您只需要将代码包装在一个稍后可以调用的函数中。

Is there a way to avoid this default execution of the code when the promise is created?

在您希望异步操作开始执行之前不要调用它。

unfortunately a promise by default runs the moment it's created.

承诺不会运行。异步操作 运行 并使用承诺通知您 completion/results/error。异步操作 运行 执行时。如果您还不想让它们执行,请不要调用它们,直到您希望它们执行 运行.

您可以将它放在 returns 承诺的函数中,然后稍后调用承诺。

设置你的函数,returns一个承诺:

function myAsyncFunction(url) {
  return new Promise((resolve, reject) => {
    const xhr = new XMLHttpRequest();
    xhr.open("GET", url);
    xhr.onload = () => resolve(xhr.reponse);
    xhr.onerror = () => reject(xhr.statusText);
    xhr.send();
    //  Or whatever you want in your function
  });
}

然后,稍后调用您的函数:

 myAsyncFunction(url)
   .then( ... ) 
   .then( ... ) 
   .catch( ... )