2

ボタンをクリックすると、Promiseで次々と呼び出される3つの関数があります。最初の関数では、約束を返すブロックされたモデルウィンドウが必要であり、その約束で次の関数を解決します。

HTMLコードは次のとおりです。

   <div>
      <h2>Hello {{name}}</h2>
       <button (click)="OnAgeAYear()">click me</button>
   <div bsModal #getRichModal="bs-modal" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="mySmallModalLabel" aria-hidden="true">
  <div class="modal-dialog modal-sm">
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" aria-label="Close" (click)="hideChildModal()">
          <span aria-hidden="true">&times;</span>
        </button>
        <h4 class="modal-title">Child modal</h4>
      </div>
      <div class="modal-body">
        getRich quick
      </div>
      <button type="button" class="btn btn-primary" (click)="confirmGetRichYes()" >YES</button>
      <button type="button" class="btn btn-primary" (click)="confirmGetRichNo()" >NO</button>
    </div>
  </div>
</div>
</div>

ボタンクリック機能:

 OnAgeAYear() {
    //this.getRichModal.show();
    this.fateGetRichQuick()
       .then(
         result=>{
             console.log("promise returned: " + result);
             return this.fateCharity();
           },
         error=> console.log(error))
       .then(
         result=>{
           console.log("promise returned: " + result);
           return this.fateMarriage();
        }).then(
          result=>{
            console.log("promise returned: " + result);
            return this.fateMarriage();
          }
        )
     .catch(error => {
        console.log("generic cach "+error); // will be called if getUser or getRights fails
      })}

3つの機能は次のとおりです。

  fateGetRichQuick(): Promise<any>{

   var modal = this.getRichModal;  
    return new Promise<any>(function (resolve, reject) {
      var n= 1;
      modal.show();  
      // I want to resolve this promise only when user clicked yes or no.
    });}
    fateCharity(): Promise<any> {
    return new Promise<any>(function (resolve, reject) {
      resolve("fateCharity-Resolve");
    })}
    fateMarriage(): Promise<any> {
    return new Promise<any>(function (resolve, reject) {
      resolve("fateMarriage - Resolve");
    })}

モーダルウィンドウには次の機能があります。

confirmGetRichYes(): Promise <boolean>{
alert("it is yes....");
this.hideChildModal();
return Promise.resolve(true);}


confirmGetRichNo(): Promise <boolean>{
alert("it is no....");
this.hideChildModal();
return Promise.resolve(false);}


hideChildModal(){
this.getRichModal.hide();}

したがって、confirmGetRichYesでfateGetRichQuickの約束を解決したいのですが、モーダルウィンドウは関数fateGetRichQuickをブロックせず、そのフローを続行します。

plunker でコードを実行しています: http://plnkr.co/edit/nX1LcNJeuQvuWSloF50l

4

1 に答える 1