[Pas2js] Project SQLite for pas2js
Michael Van Canneyt
michael at freepascal.org
Tue Sep 22 20:54:03 CEST 2020
On Tue, 22 Sep 2020, warleyalex via Pas2js wrote:
> OK, It is a bit of investigation, and no need to Disable Cache at developer
> tools,
>
> Look at the following method (the fetch method with the object
> initialization {cache: "no-store"})
>
> { Open Async local Sqlite Database file }
> procedure OpenSQLiteDBFile(path: String; callBackDB: TProcedureSQLDB);
> async;
> var
> fetched: TJSResponse;
> buf: TJSPromise; //TJSArrayBuffer;
> dataDB: TJSUint8Array;
> begin
> fetched := await(window.fetch( path, new(['cache', 'no-store']) ));
> buf := await (fetched.arrayBuffer());
> dataDB:= TJSUint8Array.New( TJSArrayBuffer(buf) );
> callBackDB( TJSSqliteDatabase.New( dataDB ));
> end;
>
>
> By the way, I had to edit web.pas, I think the correct definition of the
> following method would be correct;
>
> function fetch(resource: String; init: TJSObject): TJSResponse;
> {TJSPromise;} overload; external name 'fetch';
Fetch returns a promise, not a TJSResponse.
See
https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch
So you will at least need an async modifier if you want to have it return a
'JSResponse'
But for backwards compatibility, this cannot be added with the name 'fetch'.
So I have added it with the name asyncfetch.
Michael.
More information about the Pas2js
mailing list