2017-06-21 94 views
0

我在我的Web應用程序中有一個函數,可以將數據添加到承諾中。但是到目前爲止,我只能通過我的方法中的參數添加一個屬性。
該代碼在調用add函數的按鈕單擊上執行。 然後調用模板服務函數create(name, name2)將多個屬性添加到承諾中

createsharecase.component.ts

// Function to add a case 
add(name: string, name2: string): void { 
    name = name.trim(); 
    name2 = name2.trim(); 
    if (!name) { return; } 
    this.templateService.create(name, name2).then(cases => 
    { this.cases.push(cases); }) 
    console.log("Name1: " + name + " Name 2: " + name2)} 


// Create a template 
create(name: string, name2: string): Promise<ICase> { 
console.log("Template service method: " + name2); 
return this._http 
    .post(this._caseUrl, JSON.stringify 
    ({ name: name, name2: name2 }), { headers: this.headers }) 
    .toPromise() 
    .then(res => res.json().data as ICase) 
    .catch(this.handleError)}; 

這是我的代碼的輸出:

Browser Image of output

回答

-1

可以解決與對象或數組的承諾。我相信沒有多方面的諾言。

與對象解決:

new Promise ((resolve, reject) => { 
    // ... something fancy 
    resolve({ 
    data: { 
     // your args goes there 
    } 
    err: { 
    } 
    }); 
    // ... if error 
    reject({ 
    data: { 
    } 
    err: { 
     // errors 
    } 
    }) 
}); 

與陣列解決是相當非常接近對象解決:

new Promise ((resolve, reject) => { 
    // ... something fancy 
    resolve({ 
    data: [ 
    // your cases go there 
    ] 
    err: { 
    } 
    }); 
    // ... if error 
    reject({ 
    data: { 
    } 
    err: { 
     // errors 
    } 
    }) 
}); 

非常方便有Destructuring assignment

// While the object is passed to then: 
const { data: { value1, value2 } } = resolveValue; 
const { value1, value2 } = resolveValue.data; 

// While the array is passed: 
const [ case1, case2 ] = resolveValue.data; 

Promise documentation