Promise.reslove(data)
и Promise.reject(error)
, а во-вторых: при возврате из then
\catch
даже они не нужны. interface ResponseData {
status: boolean;
data?: object;
}
function sendQuery(url: string, data: object): Promise<ResponseData> {
return fetch(url, {
method: "POST",
headers: {
Accept: "application/json",
"Content-Type": "application/json"
},
body: JSON.stringify(data)
}).then(response =>
response.json()
).then(data => ({
status: true,
data: data
})).catch(() => {
throw {
status: false
}
});
}
new Promise
, а потому выдаёт Promise<unknown>
. Т.е. каждый раз, когда вы используете new Promise
- надо использовать его с дженериком: new Promise<Type>
. const loader_1 = new GCodeLoader();
const loader_2 = new AMFLoader();
let ask_1 = true;
let ask_2 = true;
async function main() {
console.log('Start load')
if (ask_1){
const amfobject = await loader_1.loadAsync( './models/amf/rook.amf');
scene.add( amfobject );
console.log('on loader AMF', amfobject);
}
if (ask_2){
const object = await loader_2.loadAsync( 'models/gcode/benchy.gcode');
scene.add( object );
console.log('on loader GCode', object);
}
console.log('END load')
}
main();
Promise
- это просто хитрая надстройка надо коллбэками(полностью реализуемая на обычном js), позволяющая развернуть их порядок назначения - не более. async-await
- просто синтаксический сахар над Promise
, делающий оные менее многословными, но не меняющий механизма. http_response_code
редиректа (30х).setTimeout
вместо функции, использовано document.location
вместо window.location
.anotherReplace: [/\(\.\*\)$/, ':name']
function strReplace = (str, anotherReplace = null) => {
str = str
.replace(что-то заменяем)
.replace(eщё что меняем);
if (anotherReplace)
str = str.replace(anotherReplace[0], anotherReplace[1]);
return str;
}
export class IResultItem {
constructor(
public id: i32,
public type: string,
public date: string,
public from: string,
public from_id: i32,
public text: string
) {}
}
export function add(
result: IResultItem[] = [new IResultItem( 1, "type", "25.25.2025", "rew", 123, "hello" )]
): IResultItem[] {
return result;
}
function makeUser() {
return {
name: "Джон",
get ref(){
return this
}
};
};
let user = makeUser();
console.log(user.ref);
import from
надо чтобы в конечном файле был соответствующий export
(т.е. тот файл тоже должен быть модулем). Простой import
- это просто подключение скрипта как есть, всё равно что загрузка через <script>
.npm
пакеты содержат разные версии дистрибутивов под разные способы подключения. Надо посмотреть куда указывает module
(а не main
) в package.json
и именно этот файл можно будет подключать через import from
.module
в package.json
нет - значит библиотека не поддерживает современные es модули, увы, и придётся её использовать по-старинке(хотя лучше проверить глазами js файлы, изредка забывают указать). Именно такая ситуация наблюдается с lodash
, однако есть либа lodash-es
, которая решает эту проблему.main
в package.json
). Но из коробки без соответствующих либ они уже работать не будут.