What’s the Difference Between Sync, Async, Callbacks, and Promises? — Separating “How to Wait” from “How to Receive Results”

プログラミング・Web開発カテゴリを表すパンダのイラスト Programming / Web Development

About This Article
This article is created using an automated generation workflow leveraging generative AI. We verified the ECMAScript 2026 Promise specification, Microsoft Learn’s Task asynchronous programming, and VBA DoEvents official documentation to organize concepts that look similar by their roles.

Verification Status: 🧪 Language specifications and official documentation checked; execution order of Callbacks, Promises, and await verified in Node.js

What’s the Difference Between Sync, Async, Callbacks, and Promises? — Separating “How to Wait” from “How to Receive Results”

Synchronous and asynchronous operations are properties of how execution is waited on. Callbacks and Promises are representative coding styles and mechanisms for handling task completion and results. Therefore, 非同期 = Promise is not the case.

Furthermore, VBA’s DoEvents is not asynchronous processing itself. It is a mechanism that temporarily yields execution to the OS to process events in the queue.

First, Place Terms on Separate Axes

TermWhat It RepresentsCommon Misconceptions
SynchronousThe progression and waiting method of a called processDoes not mean “slow processing”
AsynchronousA configuration where the caller is not blocked while waiting for completion, etc.Not synonymous with parallel processing
CallbackThe pattern of passing a function to be called laterA Callback does not automatically mean asynchronous
PromiseAn object representing a result available in the futureA Promise itself does not create a separate thread
async/awaitLanguage features and syntax to write asynchronous code more easilyUsing await does not necessarily increase the number of threads
DoEventsA VBA feature that yields control to the OS to process eventsNot a general asynchronous API

Viewing Sync and Async on a Timeline

sequenceDiagram
    participant C as Caller
    participant W as Work
    rect rgb(245,245,245)
    Note over C,W: 同期のイメージ
    C->>W: start
    W-->>C: result
    C->>C: 次の処理
    end
    rect rgb(245,245,245)
    Note over C,W: 非同期のイメージ
    C->>W: start
    W-->>C: 完了を待つための表現
    C->>C: 待ち方に応じて別の処理へ
    W-->>C: completion / result
    end

The value of asynchronous processing is not “making a 3-second task take 1 second.” It lies in how waiting time is handled, such as preventing UI freezes during I/O waits, advancing other tasks, and making it easier to structure multiple operations.

Callbacks Are the Concept of “Passing Functions”

A Callback is a pattern where you pass a function you want called when a process reaches a certain condition. It is used in event handling, and Callback patterns can also be used in synchronous APIs.

Therefore, rather than concluding “it’s asynchronous because there’s a Callback,” you should check when and where the actual API invokes the Callback.

Promises Represent Future Results

The ECMAScript 2026 specification defines a Promise as a placeholder for the final result of a deferred and possibly asynchronous computation. A Promise has states such as pending, fulfilled, and rejected.

What is important here is that “Promise = parallel execution engine” is not true. A Promise is an abstraction that makes results and states easier to handle; which thread or runtime mechanism actually carries out the work is a separate matter.

async/await Changes Readability

In .NET’s Task-based Asynchronous Pattern, using await allows you to write asynchronous code in a way that closely resembles reading sequentially from top to bottom. await is not meant to simply block the current thread while waiting.

In other words, Callbacks, Promises, Tasks, and async/await are choices for “how to express the property of being asynchronous and how to receive results.”

How is VBA’s DoEvents Different?

According to Microsoft’s official VBA documentation, DoEvents is a function that yields control to the OS and returns control after processing the event queue. It is used for purposes such as letting Excel process UI events in the middle of a long loop.

However, calling DoEvents does not turn the process into an asynchronous API. Also, if the same process is re-entered while handling events, it can lead to unexpected results, so the official documentation warns to be careful about re-entrancy.

Try It Now: Observe Execution Order with the Console

Since terminology can easily get confusing, let’s compare them using a small JavaScript snippet that doesn’t use external APIs. You can paste it into your browser’s Developer Tools Console or run it with Node.js.

console.log("A: Sync start");

setTimeout(() => {
  console.log("D: Callback result");
}, 200);

Promise.resolve("Promise result").then((result) => {
  console.log("C:", result);
});

console.log("B: Sync end");

The key point is that even while waiting for setTimeout or Promise completion, the current synchronous code proceeds first up to B.

However, you must not generalize from this short example alone to say “Promises run on a separate thread” or “Callbacks are always asynchronous.” Callbacks can be used in synchronously called APIs, and Promises themselves do not create threads.

To make it a bit easier to understand, I’ve placed a complete version comparing Sync → Callback → Promise → async/await in the same file on GitHub.

node demo.js

When in Doubt, Ask Two Questions

  1. How does this operation make the caller wait until completion?

  2. How is the completion result returned—via a Callback, Promise, Task, event, or something else?

Dividing things into these two axes makes them easier to organize even when the names differ across VBA, PowerShell, JavaScript, and C#.

GitHub Sample

Official & Primary Sources

Document information

Article title
What’s the Difference Between Sync, Async, Callbacks, and Promises? — Separating “How to Wait” from “How to Receive Results”
Published
Updated
Source
https://papanda925.com/?p=15315&lang=en

License: Text and original figures for which this site holds the relevant rights are available under CC BY 4.0 , unless otherwise noted. This article may include content created or edited with generative AI. If code has a separate license notice or a linked GitHub repository license, that license takes precedence for the code. Quotations, third-party materials, images, and trademarks are excluded from this license. Usage policy

Copied title and URL