QEverCloud
Unofficial Evernote Cloud API for Qt
About asynchronous API

Asynchronous function variants let you use Qt signals/slots mechanism to call the functions in a non-blocking way.

Instead of waiting for a request completion and then returnung a result of the appropriate type asynchrounus functioins returns immediately with AsyncResult as the result. When the operation completes AsyncResult::finished signal is emitted.

NoteStore* ns;
Note note;
...
QObject::connect(ns->createNoteAsync(note), &AsyncResult::finished, [](QVariant result, QSharedPointer<EverCloudExceptionData> error) {
if(!error.isNull()) {
// do something in case of an error
} else {
Note note = result.value<Note>();
// process returned result
}
});

The result is returned through a QVariant so you have to cast it to the appropriate type. I've considered to implement different AsyncResult types for different result types but found it too troublesome. Signals and templates do not mix well.

Asynchronous functions do not throw but report errors throw error parameter. See EverCloudExceptionData documentation for details.