gulp咖啡手表从未完成错误

时间:2015-09-05 22:04:53

标签: node.js coffeescript gulp gulp-watch

我的任务看起来像这样:

gulp.task 'scripts', () ->
  gulp.src(path.scripts)
  .pipe(coffee({bare: true}).on 'error', gutil.log)
  .pipe(concat 'app.min.js')
  .pipe(size())
  .pipe(gulp.dest 'public/js')

我的手表看起来像这样:

gulp.task 'watch', () ->
  gulp.watch path.scripts, ['scripts']

只要我不尝试编译任何错误,手表就可以正常工作。如果我有一个错误,在我看来手表仍然在运行但是毫无价值地等待着什么。

如果没有错误,我会得到这样的结果:

[18:02:47] Starting 'scripts'...
[18:02:47] all files 1.05 kB
[18:02:47] Finished 'scripts' after 17 ms

但如果是错误,我只是吞下它:

[18:03:33] Starting 'scripts'...

它永远不会完成,即使控制台认为它正在运行,手表也不再有效。建议?

1 个答案:

答案 0 :(得分:1)

为了能够在错误后继续执行,您需要发出'end'事件。试试这个:

package ram.materialnavigation;

import android.content.SharedPreferences;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.Toast;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class AlarmActivity extends Activity {

    //used for register alarm manager
    PendingIntent pendingIntent;
    //used to store running alarmmanager instance
    AlarmManager alarmManager;
    //Callback function for Alarmmanager event
    BroadcastReceiver mReceiver;

    SharedPreferences sp;
//    int id;
//    String time;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.alarm_layut);
//        sp = getSharedPreferences("sp", MODE_PRIVATE);
        //Register AlarmManager Broadcast receive.
//        RegisterAlarmBroadcast();
    }

    public void onClickSetAlarm(View v) {

//        SimpleDateFormat sdf = new SimpleDateFormat("dd-M-yyyy hh:mm:ss a");
//        String dateString = "06-09-2015 12:35:30 pm";
//        try {
//            Date date = sdf.parse(dateString);
//            Calendar calendar = Calendar.getInstance();
//            calendar.setTime(date);
//            long timeMilli = calendar.getTimeInMillis();
//
//            sp.edit().putLong("timeId", timeMilli).apply();
//            Log.d("AlarmTIme",timeMilli+"");
//
//            for (int i = 0; i < 5; i++) {
//                long timeFromSP = sp.getLong("timeId", i) + (i * 1000);
//                RegisterAlarmBroadcast(timeFromSP, 0);
//            }
//
//        } catch (ParseException e) {
//            e.printStackTrace();
//        }

        Calendar calendar = Calendar.getInstance();

        for (int i = 1; i <= 3; i++) {
            RegisterAlarmBroadcast(calendar.getTimeInMillis() + i * 10000, i);
        }


    }

    private void RegisterAlarmBroadcast(long time, int requestCode) {
        Log.i("RegisterAlarmBroadcast", "Going to register Intent.RegisterAlramBroadcast");

        //This is the call back function(BroadcastReceiver) which will be call when your
        //alarm time will reached.
        mReceiver = new BroadcastReceiver() {
            private static final String TAG = "Alarm Example Receiver";

            @Override
            public void onReceive(Context context, Intent intent) {
                Log.i(TAG, "BroadcastReceiver::OnReceive() >>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
                String value = intent.getStringExtra("value");
                Toast.makeText(context, value, Toast.LENGTH_SHORT).show();
                startActivity(new Intent(AlarmActivity.this, MainActivity.class));
            }
        };

        // register the alarm broadcast here

        IntentFilter intentFilter = new IntentFilter("com.ronem");

        registerReceiver(mReceiver, intentFilter);

        Intent intent = new Intent("com.ronem");
        intent.putExtra("value", "Time request code" + requestCode);


        pendingIntent = PendingIntent.getBroadcast(this, requestCode, intent, 0);
        alarmManager = (AlarmManager) (this.getSystemService(Context.ALARM_SERVICE));
        alarmManager.set(AlarmManager.RTC_WAKEUP, time, pendingIntent);
    }

    private void UnregisterAlarmBroadcast() {
        alarmManager.cancel(pendingIntent);
        getBaseContext().unregisterReceiver(mReceiver);
    }


}